├── slotclient ├── .gitignore ├── assets │ ├── resources │ │ ├── gfx │ │ │ ├── Res.pac │ │ │ ├── Square │ │ │ │ ├── cow.png │ │ │ │ ├── dog.png │ │ │ │ ├── owl.png │ │ │ │ ├── pig.png │ │ │ │ ├── bear.png │ │ │ │ ├── chick.png │ │ │ │ ├── duck.png │ │ │ │ ├── frog.png │ │ │ │ ├── goat.png │ │ │ │ ├── hippo.png │ │ │ │ ├── horse.png │ │ │ │ ├── moose.png │ │ │ │ ├── panda.png │ │ │ │ ├── rhino.png │ │ │ │ ├── sloth.png │ │ │ │ ├── snake.png │ │ │ │ ├── whale.png │ │ │ │ ├── zebra.png │ │ │ │ ├── buffalo.png │ │ │ │ ├── chicken.png │ │ │ │ ├── elephant.png │ │ │ │ ├── giraffe.png │ │ │ │ ├── gorilla.png │ │ │ │ ├── monkey.png │ │ │ │ ├── narwhal.png │ │ │ │ ├── parrot.png │ │ │ │ ├── penguin.png │ │ │ │ ├── rabbit.png │ │ │ │ ├── walrus.png │ │ │ │ ├── crocodile.png │ │ │ │ ├── bear.png.meta │ │ │ │ ├── chick.png.meta │ │ │ │ ├── cow.png.meta │ │ │ │ ├── dog.png.meta │ │ │ │ ├── duck.png.meta │ │ │ │ ├── frog.png.meta │ │ │ │ ├── goat.png.meta │ │ │ │ ├── hippo.png.meta │ │ │ │ ├── horse.png.meta │ │ │ │ ├── moose.png.meta │ │ │ │ ├── owl.png.meta │ │ │ │ ├── panda.png.meta │ │ │ │ ├── pig.png.meta │ │ │ │ ├── rhino.png.meta │ │ │ │ ├── sloth.png.meta │ │ │ │ ├── snake.png.meta │ │ │ │ ├── whale.png.meta │ │ │ │ ├── zebra.png.meta │ │ │ │ ├── buffalo.png.meta │ │ │ │ ├── chicken.png.meta │ │ │ │ ├── giraffe.png.meta │ │ │ │ ├── gorilla.png.meta │ │ │ │ ├── monkey.png.meta │ │ │ │ ├── narwhal.png.meta │ │ │ │ ├── parrot.png.meta │ │ │ │ ├── penguin.png.meta │ │ │ │ ├── rabbit.png.meta │ │ │ │ ├── walrus.png.meta │ │ │ │ ├── crocodile.png.meta │ │ │ │ └── elephant.png.meta │ │ │ ├── Square.meta │ │ │ └── Res.pac.meta │ │ └── gfx.meta │ ├── gfx │ │ ├── glow │ │ │ ├── glow.png │ │ │ ├── glow.atlas.meta │ │ │ ├── glow.json.meta │ │ │ ├── glow.atlas │ │ │ ├── glow.json │ │ │ └── glow.png.meta │ │ └── glow.meta │ ├── sfx │ │ ├── ui │ │ │ ├── mouseclick1.ogg │ │ │ └── mouseclick1.ogg.meta │ │ ├── casino │ │ │ ├── chipsStack4.ogg │ │ │ └── chipsStack4.ogg.meta │ │ ├── ui.meta │ │ └── casino.meta │ ├── scripts │ │ ├── slots │ │ │ ├── IResult.ts │ │ │ ├── Reel.ts.meta │ │ │ ├── Tile.ts.meta │ │ │ ├── IResult.ts.meta │ │ │ ├── Machine.ts.meta │ │ │ ├── SlotRoller.ts.meta │ │ │ ├── Tile.ts │ │ │ ├── Machine.ts │ │ │ ├── Reel.ts │ │ │ └── SlotRoller.ts │ │ ├── slots.meta │ │ ├── SlotEnum.ts │ │ ├── Dice.ts.meta │ │ ├── NetworkLog.ts.meta │ │ ├── SlotEnum.ts.meta │ │ ├── GameManager.ts.meta │ │ ├── LogGenerator.ts.meta │ │ ├── NetworkLog.ts │ │ ├── Dice.ts │ │ ├── LogGenerator.ts │ │ └── GameManager.ts │ ├── gfx.meta │ ├── sfx.meta │ ├── _scenes.meta │ ├── migration.meta │ ├── prefabs.meta │ ├── resources.meta │ ├── scripts.meta │ ├── _scenes │ │ └── Main.fire.meta │ ├── prefabs │ │ ├── Reel.prefab.meta │ │ ├── Tile.prefab.meta │ │ ├── Tile.prefab │ │ └── Reel.prefab │ └── migration │ │ ├── use_v2.1-2.2.1_cc.Toggle_event.js.meta │ │ └── use_v2.1-2.2.1_cc.Toggle_event.js ├── settings │ ├── services.json │ ├── project.json │ └── builder.json ├── project.json ├── packages │ └── testpack │ │ ├── main.js │ │ ├── package.json │ │ └── panel.js ├── jsconfig.json ├── tsconfig.json ├── README.md ├── package.json ├── .eslintrc └── package-lock.json ├── README.md ├── LICENSE.md └── .gitignore /slotclient/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode/ 3 | library/ 4 | temp/ 5 | local/ -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Res.pac: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.SpriteAtlas" 3 | } -------------------------------------------------------------------------------- /slotclient/settings/services.json: -------------------------------------------------------------------------------- 1 | { 2 | "game": { 3 | "name": "UNKNOW GAME", 4 | "appid": "UNKNOW" 5 | } 6 | } -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/gfx/glow/glow.png -------------------------------------------------------------------------------- /slotclient/assets/sfx/ui/mouseclick1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/sfx/ui/mouseclick1.ogg -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.atlas.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "f91bc100-4f9e-4e17-8552-2479cf3f533b", 4 | "subMetas": {} 5 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/cow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/cow.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/dog.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/owl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/owl.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/pig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/pig.png -------------------------------------------------------------------------------- /slotclient/assets/sfx/casino/chipsStack4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/sfx/casino/chipsStack4.ogg -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/bear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/bear.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/chick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/chick.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/duck.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/frog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/frog.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/goat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/goat.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/hippo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/hippo.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/horse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/horse.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/moose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/moose.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/panda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/panda.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/rhino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/rhino.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/sloth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/sloth.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/snake.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/whale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/whale.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/zebra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/zebra.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/buffalo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/buffalo.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/chicken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/chicken.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/elephant.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/giraffe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/giraffe.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/gorilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/gorilla.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/monkey.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/narwhal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/narwhal.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/parrot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/parrot.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/penguin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/penguin.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/rabbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/rabbit.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/walrus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/walrus.png -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/crocodile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlavioFS/slot-test-client/HEAD/slotclient/assets/resources/gfx/Square/crocodile.png -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/IResult.ts: -------------------------------------------------------------------------------- 1 | interface IResult { 2 | reels: Array>, 3 | equalLines: Array, 4 | equalTile: number 5 | } -------------------------------------------------------------------------------- /slotclient/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "cocos-creator-js", 3 | "packages": "packages", 4 | "version": "2.3.1", 5 | "id": "b5e00be4-b8bd-4bb1-8bbd-fb8ae879963d" 6 | } -------------------------------------------------------------------------------- /slotclient/assets/sfx/casino/chipsStack4.ogg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.0", 3 | "uuid": "97be5907-0097-4bc0-a2dd-975620908d32", 4 | "downloadMode": 0, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /slotclient/assets/sfx/ui/mouseclick1.ogg.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.0.0", 3 | "uuid": "1e510565-b4bd-4a60-abbb-40cf59de10d5", 4 | "downloadMode": 0, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /slotclient/assets/gfx.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "ad0ec9a1-2e02-489e-b9ec-8ac9ed5b9e69", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/sfx.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "93886d01-643a-48c4-b7f3-7fc7ace50fd7", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/_scenes.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "f53b641a-6f3c-411a-b891-bd8c7d29a84f", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "e288f5c9-87a2-4699-9e9d-84f981a6d5ee", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/migration.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "5f0d0732-1291-4cb3-8000-1b012692467f", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/prefabs.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "fec3a723-38e6-48ae-83de-3adabf7b99e4", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/resources.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "0387fe55-9073-4937-8812-149b03b6172b", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "2e0ebef9-b9f4-4966-a46b-756d47d9d57a", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/sfx/ui.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "bb5db274-7a9a-4ecf-acb7-c7e9032ea788", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "109a69bf-4ae3-4ce1-8f53-767f4c1cfcdd", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "474ffae1-35de-4bda-b78d-dbfc1f74b94c", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/sfx/casino.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "dbebd484-0998-4b61-92a8-e5de86f7987d", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "4dcd8cc8-b2e6-453c-ad6c-bdb248c51280", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/_scenes/Main.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.6", 3 | "uuid": "c1bc28a2-729f-47d8-81bc-cbf91d2e4944", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.json.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.3", 3 | "uuid": "abb6c9fe-6c73-4ed2-b673-053c54d57ec8", 4 | "textures": [ 5 | "e83cdb8f-68f4-4929-a8d8-986272859cfa" 6 | ], 7 | "scale": 1, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/prefabs/Reel.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.6", 3 | "uuid": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8", 4 | "optimizationPolicy": "AUTO", 5 | "asyncLoadAssets": false, 6 | "readonly": false, 7 | "subMetas": {} 8 | } -------------------------------------------------------------------------------- /slotclient/assets/prefabs/Tile.prefab.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.6", 3 | "uuid": "a75a6cdf-ea63-4dea-af63-4cc3bf7305ac", 4 | "optimizationPolicy": "AUTO", 5 | "asyncLoadAssets": false, 6 | "readonly": false, 7 | "subMetas": {} 8 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/SlotEnum.ts: -------------------------------------------------------------------------------- 1 | const { ccclass } = cc._decorator; 2 | 3 | enum Direction { 4 | Up, 5 | Down, 6 | } 7 | 8 | @ccclass 9 | export default class SlotEnum extends cc.Component { 10 | static Direction = Direction; 11 | } 12 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/Dice.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "8eabab0b-3989-4c1f-a06f-c49d0b9a8af7", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/NetworkLog.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "386b8ffd-74fd-4788-9161-e062d90253d0", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/SlotEnum.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "cbbb2c07-de30-4760-9692-f3bafc450767", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Reel.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "91e54cf3-189e-4eb3-aab1-63bde6e3e079", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Tile.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "23da8828-3294-4bca-8174-5c3acd08aac6", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.atlas: -------------------------------------------------------------------------------- 1 | 2 | glow.png 3 | size: 256,256 4 | format: RGBA8888 5 | filter: Linear,Linear 6 | repeat: none 7 | glow 8 | rotate: false 9 | xy: 0, 0 10 | size: 237, 237 11 | orig: 408, 408 12 | offset: 85, 86 13 | index: -1 14 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/GameManager.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "74622ef5-55d1-4de0-9dfc-8af86ed5f3f5", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/LogGenerator.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "6c700b9e-6b7e-43d4-b6ea-79753f500fba", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/IResult.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "e75a287b-0c3b-4123-879b-cbc65df6deaa", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Machine.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "e75a394f-8f38-4d2d-bf33-dc7acce8f3f4", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/SlotRoller.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "6abe175b-3bf7-4fa4-a2fa-6088cce78b25", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/packages/testpack/main.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/explicit-function-return-type, no-undef */ 2 | module.exports = { 3 | messages: { 4 | open() { 5 | Editor.Panel.open('testpack'); 6 | cc.log('trying'); 7 | }, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /slotclient/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.8", 3 | "uuid": "0fc32145-d395-49d9-a660-087b36132b1c", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /slotclient/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "experimentalDecorators": true 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | ".vscode", 10 | "library", 11 | "local", 12 | "settings", 13 | "temp" 14 | ] 15 | } -------------------------------------------------------------------------------- /slotclient/packages/testpack/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "testpack", 3 | "main": "main.js", 4 | "main-menu": { 5 | "Panel/Open": { 6 | "message": "testpack:open" 7 | } 8 | }, 9 | "panel": { 10 | "main": "panel.js", 11 | "type": "dockable", 12 | "title": "Panel", 13 | "width": 400, 14 | "height": 300 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /slotclient/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": [ "es2015", "es2017", "dom" ], 5 | "target": "es5", 6 | "experimentalDecorators": true, 7 | "skipLibCheck": true, 8 | "outDir": "temp/vscode-dist", 9 | "forceConsistentCasingInFileNames": true 10 | }, 11 | "types": ["./../node_modules/@types/node"], 12 | "exclude": [ 13 | "node_modules", 14 | "library", 15 | "local", 16 | "temp", 17 | "build", 18 | "settings" 19 | ] 20 | } -------------------------------------------------------------------------------- /slotclient/README.md: -------------------------------------------------------------------------------- 1 | # :slot_machine: SlotTest Client 2 | 3 | ![Demo image](https://i.postimg.cc/63NhrYJX/slotclientdemo.gif) 4 | 5 | ## Description 6 | Client side for a simple slot machine game made with [Cocos Creator](https://www.cocos.com/en/products#CocosCreator). 7 | 8 | Features: 9 | - **Simple line patterns** - With customizable success rates. 10 | - **Line pattern highlights** - Glow effect. 11 | - **Network log** - Sends results to server dashboard. 12 | 13 | > This project is my solution to a job application test. -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Res.pac.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.0", 3 | "uuid": "4aaeba93-acc3-486d-a14b-f74075b065d0", 4 | "maxWidth": 1024, 5 | "maxHeight": 1024, 6 | "padding": 2, 7 | "allowRotation": true, 8 | "forceSquared": true, 9 | "powerOfTwo": true, 10 | "algorithm": "MaxRects", 11 | "format": "png", 12 | "quality": 80, 13 | "contourBleed": true, 14 | "paddingBleed": true, 15 | "filterUnused": false, 16 | "packable": false, 17 | "premultiplyAlpha": false, 18 | "filterMode": "bilinear", 19 | "platformSettings": {}, 20 | "subMetas": {} 21 | } -------------------------------------------------------------------------------- /slotclient/packages/testpack/panel.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | Editor.Panel.extend({ 3 | style: ` 4 | :host { margin: 5px; } 5 | h2 { color: #f90; } 6 | `, 7 | 8 | template: ` 9 |

Panel

10 | What 11 |
12 |
State: --
13 | `, 14 | 15 | $: { 16 | btn: '#btn', 17 | label: '#label', 18 | }, 19 | 20 | ready() { 21 | this.$btn.addEventListener('confirm', () => { 22 | this.$label.innerText = 'Hello World'; 23 | setTimeout(() => { 24 | this.$label.innerText = '--'; 25 | }, 500); 26 | }); 27 | }, 28 | }); 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :slot_machine: SlotTest Client 2 | 3 | # [:arrow_forward: Download latest release](https://github.com/FlavioFS/slot-test-client/releases) 4 | [![Demo image](https://i.postimg.cc/63NhrYJX/slotclientdemo.gif)](https://github.com/FlavioFS/slot-test-client/releases) 5 | 6 | ## Description 7 | Client side for a simple slot machine game made with [Cocos Creator](https://www.cocos.com/en/products#CocosCreator). 8 | 9 | Features: 10 | - **Simple line patterns** - With customizable success rates. 11 | - **Line pattern highlights** - Glow effect. 12 | - **Network log** - Sends results to server dashboard. 13 | 14 | > This project is my solution to a job application test. 15 | 16 | The **server** side is also available [:slot_machine: **HERE**](https://github.com/FlavioFS/slot-test-server). -------------------------------------------------------------------------------- /slotclient/assets/scripts/NetworkLog.ts: -------------------------------------------------------------------------------- 1 | export abstract class NetworkLog { 2 | 3 | /** 4 | * Writes a reel-rolling result to history in local storage. 5 | * @param result The result to write. 6 | */ 7 | public static appendResult (result: IResult) { 8 | var xhr = new XMLHttpRequest(); 9 | var url = "https://slot-test-server2.firebaseapp.com/result"; 10 | xhr.open("POST", url, true); 11 | xhr.setRequestHeader("Content-Type", "application/json"); 12 | xhr.setRequestHeader("Accept", "*/*"); 13 | // xhr.onreadystatechange = function () { 14 | // if (xhr.readyState === 4 && xhr.status === 200) { 15 | 16 | // } 17 | // }; 18 | xhr.send(JSON.stringify(result)); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.json: -------------------------------------------------------------------------------- 1 | { 2 | "skeleton": { "hash": "Vmw+1GxaRFpq9iVEttm5X6y9ytc", "spine": "3.7.94", "width": 408, "height": 408, "images": "./img/", "audio": "" }, 3 | "bones": [ 4 | { "name": "root" } 5 | ], 6 | "slots": [ 7 | { "name": "glow", "bone": "root", "color": "ffffff00", "attachment": "glow", "blend": "additive" } 8 | ], 9 | "skins": { 10 | "default": { 11 | "glow": { 12 | "glow": { "width": 408, "height": 408 } 13 | } 14 | } 15 | }, 16 | "animations": { 17 | "loop": { 18 | "slots": { 19 | "glow": { 20 | "color": [ 21 | { "time": 0, "color": "ffffff49" }, 22 | { "time": 0.3333, "color": "00adff49" }, 23 | { "time": 0.6667, "color": "ff00f849" }, 24 | { "time": 1, "color": "f8ff0049" }, 25 | { "time": 1.3333, "color": "ffffff49" } 26 | ] 27 | } 28 | } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /slotclient/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. 3 | * You do not need to manually add this script in any other project. 4 | * If you don't use cc.Toggle in your project, you can delete this script directly. 5 | * If your project is hosted in VCS such as git, submit this script together. 6 | * 7 | * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, 8 | * 你无需在任何其它项目中手动添加此脚本。 9 | * 如果你的项目中没用到 Toggle,可直接删除该脚本。 10 | * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 11 | */ 12 | 13 | if (cc.Toggle) { 14 | // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code 15 | // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 16 | cc.Toggle._triggerEventInScript_isChecked = true; 17 | } 18 | -------------------------------------------------------------------------------- /slotclient/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slotmock", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "dependencies": { 7 | "axios": "^0.19.2", 8 | "save": "^2.4.0", 9 | "underscore": "^1.9.1" 10 | }, 11 | "devDependencies": { 12 | "@typescript-eslint/eslint-plugin": "^2.23.0", 13 | "@typescript-eslint/parser": "^2.23.0", 14 | "eslint": "^6.1.0", 15 | "eslint-config-airbnb-base": "^14.0.0", 16 | "eslint-config-prettier": "^6.10.0", 17 | "eslint-plugin-import": "^2.18.2", 18 | "eslint-plugin-prettier": "^3.1.2", 19 | "prettier": "^1.19.1", 20 | "typescript": "^3.8.3" 21 | }, 22 | "browser": { 23 | "fs": false, 24 | "path": false, 25 | "os": false 26 | }, 27 | "scripts": { 28 | "test": "echo \"Error: no test specified\" && exit 1" 29 | }, 30 | "author": "", 31 | "license": "ISC" 32 | } 33 | -------------------------------------------------------------------------------- /slotclient/settings/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "assets-sort-type": "name", 3 | "collision-matrix": [ 4 | [ 5 | true 6 | ] 7 | ], 8 | "design-resolution-height": 640, 9 | "design-resolution-width": 960, 10 | "excluded-modules": [ 11 | "3D Physics/cannon.js", 12 | "3D Physics/Builtin", 13 | "3D Particle" 14 | ], 15 | "facebook": { 16 | "appID": "", 17 | "audience": { 18 | "enable": false 19 | }, 20 | "enable": false, 21 | "live": { 22 | "enable": false 23 | } 24 | }, 25 | "fit-height": true, 26 | "fit-width": true, 27 | "group-list": [ 28 | "default" 29 | ], 30 | "last-module-event-record-time": 1584295884028, 31 | "simulator-orientation": false, 32 | "simulator-resolution": { 33 | "height": 640, 34 | "width": 960 35 | }, 36 | "start-scene": "current", 37 | "use-customize-simulator": true, 38 | "use-project-simulator-setting": false 39 | } 40 | -------------------------------------------------------------------------------- /slotclient/assets/gfx/glow/glow.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "e83cdb8f-68f4-4929-a8d8-986272859cfa", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 256, 11 | "height": 256, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "glow": { 15 | "ver": "1.0.4", 16 | "uuid": "48dcb2a4-f244-451e-812a-f67454348cad", 17 | "rawTextureUuid": "e83cdb8f-68f4-4929-a8d8-986272859cfa", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": -9.5, 22 | "offsetY": 9.5, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 237, 26 | "height": 237, 27 | "rawWidth": 256, 28 | "rawHeight": 256, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/bear.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "efd7891f-f545-404e-ac99-116e9175ff4d", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "bear": { 15 | "ver": "1.0.4", 16 | "uuid": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5", 17 | "rawTextureUuid": "efd7891f-f545-404e-ac99-116e9175ff4d", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/chick.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "ba2925ec-a831-45ea-a04a-640ddcc71f7d", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "chick": { 15 | "ver": "1.0.4", 16 | "uuid": "48726a40-672e-4b15-b953-838ce322c218", 17 | "rawTextureUuid": "ba2925ec-a831-45ea-a04a-640ddcc71f7d", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/cow.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "1948f0c7-9204-4c77-b837-c87ccc560007", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "cow": { 15 | "ver": "1.0.4", 16 | "uuid": "34b051c7-76cc-4d13-876e-67b15741f94c", 17 | "rawTextureUuid": "1948f0c7-9204-4c77-b837-c87ccc560007", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/dog.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "0ba7b21e-eff6-4b67-b89f-51619de4a43b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "dog": { 15 | "ver": "1.0.4", 16 | "uuid": "63cfa158-f76f-4a47-b2e8-170537d7e43b", 17 | "rawTextureUuid": "0ba7b21e-eff6-4b67-b89f-51619de4a43b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/duck.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "b3f1ab1b-d683-4b28-9f00-128869ae5bd5", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "duck": { 15 | "ver": "1.0.4", 16 | "uuid": "d688f49d-daab-47fa-8038-58742e6cf4ce", 17 | "rawTextureUuid": "b3f1ab1b-d683-4b28-9f00-128869ae5bd5", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/frog.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "0282109d-4fb9-43d4-9751-0b8ce4cc6b41", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "frog": { 15 | "ver": "1.0.4", 16 | "uuid": "371916fd-794e-4b6a-b904-db4e8d076ef8", 17 | "rawTextureUuid": "0282109d-4fb9-43d4-9751-0b8ce4cc6b41", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/goat.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "b4e05f23-68b3-457b-b8e2-ed4ad9729523", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "goat": { 15 | "ver": "1.0.4", 16 | "uuid": "b9e28534-5966-4d8e-b602-e16d61d8b663", 17 | "rawTextureUuid": "b4e05f23-68b3-457b-b8e2-ed4ad9729523", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/hippo.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "97193439-0e03-4646-a765-db0efd59bb9c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "hippo": { 15 | "ver": "1.0.4", 16 | "uuid": "b60ff6d7-1798-4316-a566-9211fe643301", 17 | "rawTextureUuid": "97193439-0e03-4646-a765-db0efd59bb9c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/horse.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "3fb9e44f-3502-4f81-9ce6-4ddbca6bc130", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "horse": { 15 | "ver": "1.0.4", 16 | "uuid": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8", 17 | "rawTextureUuid": "3fb9e44f-3502-4f81-9ce6-4ddbca6bc130", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/moose.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "72afae8f-7507-4219-8a5b-3352b832184e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "moose": { 15 | "ver": "1.0.4", 16 | "uuid": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16", 17 | "rawTextureUuid": "72afae8f-7507-4219-8a5b-3352b832184e", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/owl.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "9aa73f04-8dec-41f1-90a7-bbb94bce2290", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "owl": { 15 | "ver": "1.0.4", 16 | "uuid": "9796ded2-6e47-4214-886d-78626f61f790", 17 | "rawTextureUuid": "9aa73f04-8dec-41f1-90a7-bbb94bce2290", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/panda.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "b27c4b58-40e1-427e-8bcd-391d62c166a1", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "panda": { 15 | "ver": "1.0.4", 16 | "uuid": "eb6185ff-8b0b-425c-be61-3f4c68117cda", 17 | "rawTextureUuid": "b27c4b58-40e1-427e-8bcd-391d62c166a1", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/pig.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "f94e9fb0-ceb9-4b19-bafd-db69877e09fc", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "pig": { 15 | "ver": "1.0.4", 16 | "uuid": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f", 17 | "rawTextureUuid": "f94e9fb0-ceb9-4b19-bafd-db69877e09fc", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/rhino.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "6b05430e-60c1-4af1-840d-9410ab60efaf", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "rhino": { 15 | "ver": "1.0.4", 16 | "uuid": "feb3a015-4774-4a5e-9464-b9c601d24779", 17 | "rawTextureUuid": "6b05430e-60c1-4af1-840d-9410ab60efaf", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/sloth.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "ebf57f12-1e75-4842-ae9d-adfb980a59c3", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "sloth": { 15 | "ver": "1.0.4", 16 | "uuid": "66e59b67-a138-488f-aacc-32e178b14120", 17 | "rawTextureUuid": "ebf57f12-1e75-4842-ae9d-adfb980a59c3", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/snake.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "77a10e4a-b4e3-43c3-b768-02ead4871e84", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "snake": { 15 | "ver": "1.0.4", 16 | "uuid": "fd3d6391-7f83-4172-9d3b-f7c08e608069", 17 | "rawTextureUuid": "77a10e4a-b4e3-43c3-b768-02ead4871e84", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/whale.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "0b058b66-42d4-42ff-b850-22ccbfd57e6e", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "whale": { 15 | "ver": "1.0.4", 16 | "uuid": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f", 17 | "rawTextureUuid": "0b058b66-42d4-42ff-b850-22ccbfd57e6e", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/zebra.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "41d4383b-a965-4837-b90a-8ab8f4b48029", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "zebra": { 15 | "ver": "1.0.4", 16 | "uuid": "26a4af08-1209-403f-9a44-68fbde1047bd", 17 | "rawTextureUuid": "41d4383b-a965-4837-b90a-8ab8f4b48029", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/buffalo.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "fdd144b1-dc4e-4cd0-9b26-ec55f7679084", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "buffalo": { 15 | "ver": "1.0.4", 16 | "uuid": "55cf8e3a-dfae-4041-bd35-1306dca73547", 17 | "rawTextureUuid": "fdd144b1-dc4e-4cd0-9b26-ec55f7679084", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/chicken.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "b8ad975d-3944-433e-8da8-7f9b8e752ab3", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "chicken": { 15 | "ver": "1.0.4", 16 | "uuid": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b", 17 | "rawTextureUuid": "b8ad975d-3944-433e-8da8-7f9b8e752ab3", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/giraffe.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "37c70f11-b170-4aae-a875-474075a47ed9", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "giraffe": { 15 | "ver": "1.0.4", 16 | "uuid": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb", 17 | "rawTextureUuid": "37c70f11-b170-4aae-a875-474075a47ed9", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/gorilla.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "338b59c5-a8e1-408b-9476-208b9b453363", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "gorilla": { 15 | "ver": "1.0.4", 16 | "uuid": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef", 17 | "rawTextureUuid": "338b59c5-a8e1-408b-9476-208b9b453363", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/monkey.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "0301a551-e21e-4f0a-9a33-89c06f6af54b", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "monkey": { 15 | "ver": "1.0.4", 16 | "uuid": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae", 17 | "rawTextureUuid": "0301a551-e21e-4f0a-9a33-89c06f6af54b", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/narwhal.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "0fc88a55-776b-46e5-8e5c-f75494bb2ee8", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "narwhal": { 15 | "ver": "1.0.4", 16 | "uuid": "c792dfa8-5643-4125-b096-c02fa0d3c997", 17 | "rawTextureUuid": "0fc88a55-776b-46e5-8e5c-f75494bb2ee8", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/parrot.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "eee5ea1d-fac5-45e3-8307-269fc93b08be", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "parrot": { 15 | "ver": "1.0.4", 16 | "uuid": "fe8273e0-29b0-4610-a57f-b7b81065530e", 17 | "rawTextureUuid": "eee5ea1d-fac5-45e3-8307-269fc93b08be", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/penguin.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "200e56c4-2695-4caf-9fc9-c27617e22d4c", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "penguin": { 15 | "ver": "1.0.4", 16 | "uuid": "d5ce4640-70fa-490f-a8b3-61c207a42cec", 17 | "rawTextureUuid": "200e56c4-2695-4caf-9fc9-c27617e22d4c", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/rabbit.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "9f9e1bd9-3751-40db-9b32-964705157ef8", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "rabbit": { 15 | "ver": "1.0.4", 16 | "uuid": "756e8ce5-aa82-410d-9e91-e81752026993", 17 | "rawTextureUuid": "9f9e1bd9-3751-40db-9b32-964705157ef8", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/walrus.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "9dda88ee-eaee-411c-9fcb-4826905443a0", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "walrus": { 15 | "ver": "1.0.4", 16 | "uuid": "3a646fc7-dfdf-4a9e-b940-582881319694", 17 | "rawTextureUuid": "9dda88ee-eaee-411c-9fcb-4826905443a0", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/crocodile.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "d46a5e95-9326-48db-8e0c-ee58fcaae2be", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "crocodile": { 15 | "ver": "1.0.4", 16 | "uuid": "e0ae39e1-c25f-4b58-af5a-143f385d47e3", 17 | "rawTextureUuid": "d46a5e95-9326-48db-8e0c-ee58fcaae2be", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/resources/gfx/Square/elephant.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "d9d2fc74-f8ce-4a58-a8da-1b0670a2b65f", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": true, 10 | "width": 136, 11 | "height": 136, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "elephant": { 15 | "ver": "1.0.4", 16 | "uuid": "bb0d4765-6fdd-4eb3-a802-a26832e215ee", 17 | "rawTextureUuid": "d9d2fc74-f8ce-4a58-a8da-1b0670a2b65f", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 136, 26 | "height": 136, 27 | "rawWidth": 136, 28 | "rawHeight": 136, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /slotclient/assets/scripts/Dice.ts: -------------------------------------------------------------------------------- 1 | export abstract class Dice { 2 | /** 3 | * Returns a random integer between min (inclusive) and max (exclusive). 4 | * @param min Minimum value (inclusive). 5 | * @param max Maximum value (exclusive). 6 | */ 7 | public static randomInt (min: number, max: number) { 8 | return Math.floor(Math.random() * (max - min)) + min; 9 | } 10 | 11 | /** 12 | * Returns a random integer between 0 (inclusive) and max (exclusive). 13 | * @param max Maximum value (exclusive). 14 | */ 15 | public static roll (max: number) { 16 | return Dice.randomInt(0, max); 17 | } 18 | 19 | /** 20 | * Returns a random integer between 0 (inclusive) and max (exclusive) that is different from a specific value. 21 | * @param max Maximum value (exclusive). 22 | * @param except Any result except by this number. 23 | */ 24 | public static rollDifferent (max: number, except: number) { 25 | const roll = Dice.roll(max-1); 26 | return (roll < except) ? roll : roll + 1; 27 | } 28 | } -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Flávio Freitas 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /slotclient/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true 4 | }, 5 | "parserOptions": { 6 | "ecmaVersion": 2020, 7 | "sourceType": "module" 8 | }, 9 | "parser": "@typescript-eslint/parser", 10 | "extends": [ 11 | "airbnb-base", 12 | "prettier", 13 | "plugin:@typescript-eslint/recommended" 14 | ], 15 | "plugins": ["prettier", "@typescript-eslint"], 16 | "globals": { 17 | "cc": "readonly" 18 | }, 19 | "rules": { 20 | "indent": "warn", 21 | "one-var": "warn", 22 | "camelcase": "warn", 23 | "comma-spacing": "warn", 24 | "import/no-unresolved": "off", 25 | 26 | "eqeqeq": "warn", 27 | "no-alert": "warn", 28 | "no-console": "warn", 29 | "no-underscore-dangle": "off", 30 | "class-methods-use-this": "off", 31 | 32 | "@typescript-eslint/no-this-alias": "off", 33 | "@typescript-eslint/array-type": [ 34 | "error", 35 | { 36 | "default": "generic" 37 | } 38 | ], 39 | 40 | "prettier/prettier": [ 41 | "error", 42 | { 43 | "trailingComma": "es5", 44 | "singleQuote": true, 45 | "printWidth": 120 46 | } 47 | ] 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Tile.ts: -------------------------------------------------------------------------------- 1 | const { ccclass, property } = cc._decorator; 2 | 3 | @ccclass 4 | export default class Tile extends cc.Component { 5 | @property({ type: [cc.SpriteFrame], visible: true }) 6 | private textures = []; 7 | 8 | private textureCount : number; 9 | 10 | get tileCount() { 11 | return this.textures.length; 12 | } 13 | 14 | async onLoad(): Promise { 15 | await this.loadTextures(); 16 | } 17 | 18 | async resetInEditor(): Promise { 19 | await this.loadTextures(); 20 | this.setRandom(); 21 | } 22 | 23 | async loadTextures(): Promise { 24 | const self = this; 25 | return new Promise(resolve => { 26 | cc.loader.loadResDir('gfx/Square', cc.SpriteFrame, function afterLoad(err, loadedTextures) { 27 | self.textures = loadedTextures; 28 | resolve(true); 29 | }); 30 | }); 31 | } 32 | 33 | setTile(index: number): void { 34 | this.node.getComponent(cc.Sprite).spriteFrame = this.textures[index]; 35 | } 36 | 37 | setRandom(): void { 38 | const randomIndex = Math.floor(Math.random() * this.textures.length); 39 | this.setTile(randomIndex); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/cocoscreator 2 | # Edit at https://www.gitignore.io/?templates=cocoscreator 3 | 4 | ### CocosCreator ### 5 | #///////////////////////////////////////////////////////////////////////////// 6 | # Cocos Creator Projects 7 | 8 | build/ 9 | library/ 10 | temp/ 11 | local/ 12 | jsb-default/ 13 | jsb-binary/ 14 | jsb-link/ 15 | web-desktop/ 16 | web-mobile/ 17 | runtime/ 18 | jsb/ 19 | export/ 20 | 21 | # Logs and databases 22 | 23 | *.log 24 | *.sql 25 | *.sqlite 26 | 27 | # files for debugger 28 | 29 | *.sln 30 | *.csproj 31 | *.pidb 32 | *.unityproj 33 | *.suo 34 | 35 | # OS generated files 36 | 37 | .DS_Store 38 | ehthumbs.db 39 | Thumbs.db 40 | 41 | # exvim files 42 | 43 | *UnityVS.meta 44 | *.err 45 | *.err.meta 46 | *.exvim 47 | *.exvim.meta 48 | *.vimentry 49 | *.vimentry.meta 50 | *.vimproject 51 | *.vimproject.meta 52 | .vimfiles.*/ 53 | .exvim.*/ 54 | quick_gen_project_*_autogen.bat 55 | quick_gen_project_*_autogen.bat.meta 56 | quick_gen_project_*_autogen.sh 57 | quick_gen_project_*_autogen.sh.meta 58 | .exvim.app 59 | 60 | # modules 61 | 62 | npm-debug.log 63 | node_modules/ 64 | 65 | # webstorm files 66 | 67 | .idea/ 68 | 69 | # VSCode files 70 | 71 | creator.d.ts 72 | .vscode/ 73 | 74 | # End of https://www.gitignore.io/api/cocoscreator -------------------------------------------------------------------------------- /slotclient/assets/scripts/LogGenerator.ts: -------------------------------------------------------------------------------- 1 | import { SlotRoller } from "./slots/SlotRoller" 2 | 3 | /** 4 | * Generates javascript log files. 5 | * This class is a helper tool for debug purposes only. 6 | */ 7 | export abstract class LogGenerator { 8 | 9 | /** 10 | * Save text to file and download it. 11 | * @param filename Generated file name. 12 | * @param text Text to save. 13 | */ 14 | public static download(filename: string, text: string): void { 15 | var element = document.createElement('a'); 16 | element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 17 | element.setAttribute('download', filename); 18 | element.style.display = 'none'; 19 | document.body.appendChild(element); 20 | element.click(); 21 | document.body.removeChild(element); 22 | } 23 | 24 | /** 25 | * Generate javascript log file and download it. 26 | * @param tileCount Amount of unique tile textures. 27 | * @param reelCount Amount of vertical rolling lines in this machine. 28 | * @param length Amount of rolls (iterations) in log history. 29 | */ 30 | public static generateBaseLog(tileCount: number, reelCount: number, length: number) { 31 | let log = []; 32 | for (let i = 0; i < length; i++) { 33 | log.push(SlotRoller.roll(tileCount, reelCount)); 34 | } 35 | LogGenerator.download('log.js', `module.exports = {\n\thistory: ${JSON.stringify(log)}\n}`); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /slotclient/settings/builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "android-instant": { 3 | "REMOTE_SERVER_ROOT": "", 4 | "host": "", 5 | "packageName": "org.cocos2d.SlotMock", 6 | "pathPattern": "", 7 | "recordPath": "", 8 | "scheme": "https", 9 | "skipRecord": false 10 | }, 11 | "appBundle": false, 12 | "baidugame": { 13 | "REMOTE_SERVER_ROOT": "", 14 | "appid": "testappid", 15 | "orientation": "portrait", 16 | "subContext": "" 17 | }, 18 | "encryptJs": true, 19 | "excludeScenes": [], 20 | "fb-instant-games": {}, 21 | "includeSDKBox": false, 22 | "inlineSpriteFrames": true, 23 | "inlineSpriteFrames_native": true, 24 | "md5Cache": false, 25 | "mergeStartScene": false, 26 | "optimizeHotUpdate": false, 27 | "orientation": { 28 | "landscapeLeft": true, 29 | "landscapeRight": true, 30 | "portrait": false, 31 | "upsideDown": false 32 | }, 33 | "packageName": "org.cocos2d.SlotMock", 34 | "qqplay": { 35 | "REMOTE_SERVER_ROOT": "", 36 | "orientation": "portrait", 37 | "zip": false 38 | }, 39 | "startScene": "c1bc28a2-729f-47d8-81bc-cbf91d2e4944", 40 | "title": "SlotClient", 41 | "webOrientation": "auto", 42 | "wechatgame": { 43 | "REMOTE_SERVER_ROOT": "", 44 | "appid": "wx6ac3f5090a6b99c5", 45 | "orientation": "portrait", 46 | "separate_engine": false, 47 | "subContext": "" 48 | }, 49 | "xxteaKey": "905233d8-d10e-4e", 50 | "zipCompressJs": true, 51 | "android": { 52 | "packageName": "org.cocos2d.SlotMock" 53 | }, 54 | "ios": { 55 | "packageName": "org.cocos2d.SlotMock" 56 | }, 57 | "mac": { 58 | "packageName": "org.cocos2d.SlotMock" 59 | }, 60 | "win32": {}, 61 | "includeAnySDK": false 62 | } 63 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/GameManager.ts: -------------------------------------------------------------------------------- 1 | import { SlotRoller } from "./slots/SlotRoller" 2 | import { NetworkLog } from "./NetworkLog"; 3 | 4 | const { ccclass, property } = cc._decorator; 5 | 6 | @ccclass 7 | export default class GameManager extends cc.Component { 8 | 9 | // ==================================================== 10 | // Attributes 11 | // ==================================================== 12 | @property(cc.Node) 13 | machine: cc.Node = null; 14 | 15 | @property({ type: cc.AudioClip }) 16 | audioClick: cc.AudioClip = null; 17 | 18 | private block = false; 19 | private result: IResult = null; 20 | 21 | private _reelCount: number = 0; 22 | get reelCount(): number { 23 | if (this._reelCount <= 0) { 24 | try { 25 | this._reelCount = this.machine.getComponent('Machine').numberOfReels; 26 | } catch (error) { 27 | this._reelCount = 0; 28 | } 29 | } 30 | 31 | return this._reelCount; 32 | } 33 | 34 | private _tileCount: number = 0; 35 | get tileCount(): number { 36 | if (this._tileCount <= 0) { 37 | try { 38 | this._tileCount = this.machine.getChildByName('Reel').getChildByName('In').getChildByName('Tile').getComponent('Tile').tileCount; 39 | } catch (error) { 40 | this._tileCount = 0; 41 | } 42 | } 43 | 44 | return this._tileCount; 45 | } 46 | 47 | 48 | // ==================================================== 49 | // Methods 50 | // ==================================================== 51 | start(): void { 52 | this.machine.getComponent('Machine').createMachine(); 53 | } 54 | 55 | update(): void { 56 | if (this.block && this.result != null) { 57 | this.informStop(); 58 | this.result = null; 59 | } 60 | } 61 | 62 | click(): void { 63 | cc.audioEngine.playEffect(this.audioClick, false); 64 | if (this.machine.getComponent('Machine').spinning === false) { 65 | this.block = false; 66 | this.machine.getComponent('Machine').spin(); 67 | this.requestResult(); 68 | } else if (!this.block) { 69 | this.block = true; 70 | this.machine.getComponent('Machine').lock(); 71 | } 72 | } 73 | 74 | async requestResult(): Promise { 75 | this.result = null; 76 | this.result = await this.getAnswer(); 77 | } 78 | 79 | getAnswer(): Promise { 80 | return new Promise(resolve => { 81 | setTimeout(() => { 82 | const result: IResult = SlotRoller.roll(this.tileCount, this.reelCount); 83 | resolve(result); 84 | NetworkLog.appendResult(result); 85 | }, 1000 + 500 * Math.random()); 86 | }); 87 | } 88 | 89 | informStop(): void { 90 | this.machine.getComponent('Machine').stop(this.result); 91 | } 92 | 93 | 94 | 95 | } 96 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Machine.ts: -------------------------------------------------------------------------------- 1 | import Aux from '../SlotEnum'; 2 | 3 | const { ccclass, property } = cc._decorator; 4 | 5 | @ccclass 6 | export default class Machine extends cc.Component { 7 | @property(cc.Node) 8 | public button: cc.Node = null; 9 | 10 | @property(cc.Node) 11 | public glows: cc.Node = null; 12 | 13 | @property(cc.Prefab) 14 | public _reelPrefab = null; 15 | 16 | @property({ type: cc.Prefab }) 17 | get reelPrefab(): cc.Prefab { 18 | return this._reelPrefab; 19 | } 20 | 21 | set reelPrefab(newPrefab: cc.Prefab) { 22 | this._reelPrefab = newPrefab; 23 | this.node.removeAllChildren(); 24 | 25 | if (newPrefab !== null) { 26 | this.createMachine(); 27 | } 28 | } 29 | 30 | @property({ type: cc.Integer }) 31 | public _numberOfReels = 3; 32 | 33 | @property({ type: cc.Integer, range: [3, 6], slide: true }) 34 | get numberOfReels(): number { 35 | return this._numberOfReels; 36 | } 37 | 38 | set numberOfReels(newNumber: number) { 39 | this._numberOfReels = newNumber; 40 | 41 | if (this.reelPrefab !== null) { 42 | this.createMachine(); 43 | } 44 | } 45 | 46 | private reels = []; 47 | 48 | public spinning = false; 49 | 50 | createMachine(): void { 51 | this.node.destroyAllChildren(); 52 | this.reels = []; 53 | 54 | let newReel: cc.Node; 55 | for (let i = 0; i < this.numberOfReels; i += 1) { 56 | newReel = cc.instantiate(this.reelPrefab); 57 | this.node.addChild(newReel); 58 | this.reels[i] = newReel; 59 | 60 | const reelScript = newReel.getComponent('Reel'); 61 | reelScript.shuffle(); 62 | reelScript.reelAnchor.getComponent(cc.Layout).enabled = false; 63 | } 64 | 65 | this.node.getComponent(cc.Widget).updateAlignment(); 66 | } 67 | 68 | spin(): void { 69 | this.spinning = true; 70 | this.button.getChildByName('Label').getComponent(cc.Label).string = 'STOP'; 71 | this.disableGlow(); 72 | 73 | for (let i = 0; i < this.numberOfReels; i += 1) { 74 | const theReel = this.reels[i].getComponent('Reel'); 75 | 76 | if (i % 2) { 77 | theReel.spinDirection = Aux.Direction.Down; 78 | } else { 79 | theReel.spinDirection = Aux.Direction.Up; 80 | } 81 | 82 | theReel.doSpin(0.03 * i); 83 | } 84 | } 85 | 86 | lock(): void { 87 | this.button.getComponent(cc.Button).interactable = false; 88 | } 89 | 90 | stop(result: IResult = null): void { 91 | setTimeout(() => { 92 | this.spinning = false; 93 | this.button.getComponent(cc.Button).interactable = true; 94 | this.button.getChildByName('Label').getComponent(cc.Label).string = 'SPIN'; 95 | this.enableGlow(result); 96 | }, 2500); 97 | 98 | const rngMod = Math.random() / 2; 99 | for (let i = 0; i < this.numberOfReels; i += 1) { 100 | const spinDelay = i < 2 + rngMod ? i / 4 : rngMod * (i - 2) + i / 4; 101 | const theReel = this.reels[i].getComponent('Reel'); 102 | 103 | setTimeout(() => { 104 | theReel.readyStop(result.reels[i]); 105 | }, spinDelay * 1000); 106 | } 107 | } 108 | 109 | enableGlow(result:IResult = null): void { 110 | for (const lineIndex of result.equalLines) { 111 | try { 112 | const line: cc.Node = this.glows.children[lineIndex] 113 | for (const glow of line.children) { 114 | const skel: sp.Skeleton = glow.getComponent('sp.Skeleton'); 115 | skel.animation = "loop"; 116 | } 117 | } catch (error) { 118 | console.log(error); 119 | } 120 | } 121 | } 122 | 123 | disableGlow(): void { 124 | try { 125 | for (const line of this.glows.children) { 126 | for (const glow of line.children) { 127 | const skel: sp.Skeleton = glow.getComponent('sp.Skeleton'); 128 | skel.animation = null; 129 | } 130 | } 131 | } catch (error) { 132 | console.log(error); 133 | } 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/Reel.ts: -------------------------------------------------------------------------------- 1 | import Aux from '../SlotEnum'; 2 | 3 | const { ccclass, property } = cc._decorator; 4 | 5 | @ccclass 6 | export default class Reel extends cc.Component { 7 | @property({ type: cc.Node }) 8 | public reelAnchor = null; 9 | 10 | @property({ type: cc.Enum(Aux.Direction) }) 11 | public spinDirection = Aux.Direction.Down; 12 | 13 | @property({ type: [cc.Node], visible: false }) 14 | private tiles = []; 15 | 16 | @property({ type: cc.Prefab }) 17 | public _tilePrefab = null; 18 | 19 | @property({ type: cc.Prefab }) 20 | get tilePrefab(): cc.Prefab { 21 | return this._tilePrefab; 22 | } 23 | 24 | set tilePrefab(newPrefab: cc.Prefab) { 25 | this._tilePrefab = newPrefab; 26 | this.reelAnchor.removeAllChildren(); 27 | this.tiles = []; 28 | 29 | if (newPrefab !== null) { 30 | this.createReel(); 31 | this.shuffle(); 32 | } 33 | } 34 | 35 | private result: Array = []; 36 | 37 | public stopSpinning = false; 38 | 39 | createReel(): void { 40 | let newTile: cc.Node; 41 | for (let i = 0; i < 5; i += 1) { 42 | newTile = cc.instantiate(this.tilePrefab); 43 | this.reelAnchor.addChild(newTile); 44 | this.tiles[i] = newTile; 45 | } 46 | } 47 | 48 | shuffle(): void { 49 | for (let i = 0; i < this.tiles.length; i += 1) { 50 | this.tiles[i].getComponent('Tile').setRandom(); 51 | } 52 | } 53 | 54 | readyStop(newResult: Array): void { 55 | const check = this.spinDirection === Aux.Direction.Down || newResult == null; 56 | this.result = check ? newResult : newResult.reverse(); 57 | this.stopSpinning = true; 58 | } 59 | 60 | changeCallback(element: cc.Node = null): void { 61 | const el = element; 62 | const dirModifier = this.spinDirection === Aux.Direction.Down ? -1 : 1; 63 | if (el.position.y * dirModifier > 288) { 64 | el.position = cc.v2(0, -288 * dirModifier); 65 | 66 | let pop = null; 67 | if (this.result != null && this.result.length > 0) { 68 | pop = this.result.pop(); 69 | } 70 | 71 | if (pop != null && pop >= 0) { 72 | el.getComponent('Tile').setTile(pop); 73 | } else { 74 | el.getComponent('Tile').setRandom(); 75 | } 76 | } 77 | } 78 | 79 | checkEndCallback(element: cc.Node = null): void { 80 | const el = element; 81 | if (this.stopSpinning) { 82 | this.getComponent(cc.AudioSource).play(); 83 | this.doStop(el); 84 | } else { 85 | this.doSpinning(el); 86 | } 87 | } 88 | 89 | doSpin(windUp: number): void { 90 | this.stopSpinning = false; 91 | 92 | this.reelAnchor.children.forEach(element => { 93 | const dirModifier = this.spinDirection === Aux.Direction.Down ? -1 : 1; 94 | 95 | const delay = cc.tween(element).delay(windUp); 96 | const start = cc.tween(element).by(0.25, { position: cc.v2(0, 144 * dirModifier) }, { easing: 'backIn' }); 97 | const doChange = cc.tween().call(() => this.changeCallback(element)); 98 | const callSpinning = cc.tween(element).call(() => this.doSpinning(element, 5)); 99 | 100 | delay 101 | .then(start) 102 | .then(doChange) 103 | .then(callSpinning) 104 | .start(); 105 | }); 106 | } 107 | 108 | doSpinning(element: cc.Node = null, times = 1): void { 109 | const dirModifier = this.spinDirection === Aux.Direction.Down ? -1 : 1; 110 | 111 | const move = cc.tween().by(0.04, { position: cc.v2(0, 144 * dirModifier) }); 112 | const doChange = cc.tween().call(() => this.changeCallback(element)); 113 | const repeat = cc.tween(element).repeat(times, move.then(doChange)); 114 | const checkEnd = cc.tween().call(() => this.checkEndCallback(element)); 115 | 116 | repeat.then(checkEnd).start(); 117 | } 118 | 119 | doStop(element: cc.Node = null): void { 120 | const dirModifier = this.spinDirection === Aux.Direction.Down ? -1 : 1; 121 | 122 | const move = cc.tween(element).by(0.04, { position: cc.v2(0, 144 * dirModifier) }); 123 | const doChange = cc.tween().call(() => this.changeCallback(element)); 124 | const end = cc.tween().by(0.2, { position: cc.v2(0, 144 * dirModifier) }, { easing: 'bounceOut' }); 125 | 126 | move 127 | .then(doChange) 128 | .then(move) 129 | .then(doChange) 130 | .then(end) 131 | .then(doChange) 132 | .start(); 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /slotclient/assets/prefabs/Tile.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_native": "", 7 | "data": { 8 | "__id__": 1 9 | }, 10 | "optimizationPolicy": 0, 11 | "asyncLoadAssets": false, 12 | "readonly": false 13 | }, 14 | { 15 | "__type__": "cc.Node", 16 | "_name": "Tile", 17 | "_objFlags": 0, 18 | "_parent": null, 19 | "_children": [], 20 | "_active": true, 21 | "_level": 1, 22 | "_components": [ 23 | { 24 | "__id__": 2 25 | }, 26 | { 27 | "__id__": 3 28 | } 29 | ], 30 | "_prefab": { 31 | "__id__": 4 32 | }, 33 | "_opacity": 255, 34 | "_color": { 35 | "__type__": "cc.Color", 36 | "r": 255, 37 | "g": 255, 38 | "b": 255, 39 | "a": 255 40 | }, 41 | "_contentSize": { 42 | "__type__": "cc.Size", 43 | "width": 136, 44 | "height": 136 45 | }, 46 | "_anchorPoint": { 47 | "__type__": "cc.Vec2", 48 | "x": 0.5, 49 | "y": 0.5 50 | }, 51 | "_eulerAngles": { 52 | "__type__": "cc.Vec3", 53 | "x": 0, 54 | "y": 0, 55 | "z": 0 56 | }, 57 | "_skewX": 0, 58 | "_skewY": 0, 59 | "_is3DNode": false, 60 | "groupIndex": 0, 61 | "_id": "", 62 | "_trs": { 63 | "__type__": "TypedArray", 64 | "ctor": "Float64Array", 65 | "array": [ 66 | 0, 67 | 0, 68 | 0, 69 | 0, 70 | 0, 71 | 0, 72 | 0, 73 | 1, 74 | 1, 75 | 1 76 | ] 77 | } 78 | }, 79 | { 80 | "__type__": "cc.Sprite", 81 | "_name": "", 82 | "_objFlags": 0, 83 | "node": { 84 | "__id__": 1 85 | }, 86 | "_enabled": true, 87 | "_materials": [ 88 | { 89 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 90 | } 91 | ], 92 | "_srcBlendFactor": 770, 93 | "_dstBlendFactor": 771, 94 | "_spriteFrame": { 95 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 96 | }, 97 | "_type": 0, 98 | "_sizeMode": 1, 99 | "_fillType": 0, 100 | "_fillCenter": { 101 | "__type__": "cc.Vec2", 102 | "x": 0, 103 | "y": 0 104 | }, 105 | "_fillStart": 0, 106 | "_fillRange": 0, 107 | "_isTrimmedMode": true, 108 | "_atlas": null, 109 | "_id": "" 110 | }, 111 | { 112 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 113 | "_name": "", 114 | "_objFlags": 0, 115 | "node": { 116 | "__id__": 1 117 | }, 118 | "_enabled": true, 119 | "textures": [ 120 | { 121 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 122 | }, 123 | { 124 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 125 | }, 126 | { 127 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 128 | }, 129 | { 130 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 131 | }, 132 | { 133 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 134 | }, 135 | { 136 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 137 | }, 138 | { 139 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 140 | }, 141 | { 142 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 143 | }, 144 | { 145 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 146 | }, 147 | { 148 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 149 | }, 150 | { 151 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 152 | }, 153 | { 154 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 155 | }, 156 | { 157 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 158 | }, 159 | { 160 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 161 | }, 162 | { 163 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 164 | }, 165 | { 166 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 167 | }, 168 | { 169 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 170 | }, 171 | { 172 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 173 | }, 174 | { 175 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 176 | }, 177 | { 178 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 179 | }, 180 | { 181 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 182 | }, 183 | { 184 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 185 | }, 186 | { 187 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 188 | }, 189 | { 190 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 191 | }, 192 | { 193 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 194 | }, 195 | { 196 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 197 | }, 198 | { 199 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 200 | }, 201 | { 202 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 203 | }, 204 | { 205 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 206 | }, 207 | { 208 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 209 | } 210 | ], 211 | "_id": "" 212 | }, 213 | { 214 | "__type__": "cc.PrefabInfo", 215 | "root": { 216 | "__id__": 1 217 | }, 218 | "asset": { 219 | "__uuid__": "a75a6cdf-ea63-4dea-af63-4cc3bf7305ac" 220 | }, 221 | "fileId": "9cEqHItG9LvIpEA/LHcuEZ", 222 | "sync": false 223 | } 224 | ] -------------------------------------------------------------------------------- /slotclient/assets/scripts/slots/SlotRoller.ts: -------------------------------------------------------------------------------- 1 | import { Dice } from "../Dice"; 2 | 3 | /** 4 | * Rolls the reels. 5 | */ 6 | export class SlotRoller { 7 | 8 | static readonly ROLL_ALL_EQUAL: number = 7; 9 | static readonly ROLL_TWO_LINES: number = 10 + SlotRoller.ROLL_ALL_EQUAL; // 17 10 | static readonly ROLL_SINGLE_LINE: number = 33 + SlotRoller.ROLL_TWO_LINES; // 50 11 | 12 | static readonly REEL_LENGTH: number = 3 13 | 14 | // ==================================================== 15 | // Public 16 | // ==================================================== 17 | /** 18 | * Returns results based on a predefined probability list. 19 | * @param tileCount Amount of unique tile textures. 20 | * @param reelCount Amount of vertical rolling lines in this machine. 21 | */ 22 | public static roll(tileCount: number, reelCount: number): IResult { 23 | var result = { 24 | reels: [], 25 | equalLines: [], 26 | equalTile: 0 27 | }; 28 | 29 | const roll = Dice.roll(100); 30 | if (roll < SlotRoller.ROLL_ALL_EQUAL) { 31 | result = SlotRoller.allLinesResult(tileCount, reelCount); 32 | } 33 | else if (roll < SlotRoller.ROLL_TWO_LINES) { 34 | result = SlotRoller.twoLinesResult(tileCount, reelCount); 35 | } 36 | else if (roll < SlotRoller.ROLL_SINGLE_LINE) { 37 | result = SlotRoller.singleLineResult(tileCount, reelCount); 38 | } 39 | else { 40 | result = SlotRoller.noLinesResult(tileCount, reelCount); 41 | } 42 | 43 | return result; 44 | } 45 | 46 | 47 | // ==================================================== 48 | // Private 49 | // ==================================================== 50 | /** 51 | * Creates an empty matrix of a given size. 52 | * @param reelCount Column count. 53 | */ 54 | private static createEmptyMatrix(reelCount: number): Array> { 55 | var result = []; 56 | for (let j = 0; j < reelCount; j++) { 57 | result.push([]); 58 | } 59 | return result; 60 | } 61 | 62 | /** 63 | * Generates a line containing at least one different tile. 64 | * @param reelCount Line length. 65 | */ 66 | private static createUnequalLine(tileCount: number, reelCount: number): Array { 67 | var result = []; 68 | var uniqueValues = []; 69 | 70 | for (let j = 0; j < reelCount; ++j) { 71 | result[j] = Dice.roll(tileCount); 72 | if (!uniqueValues.includes(result[j])) { 73 | uniqueValues.push(result[j]); 74 | } 75 | } 76 | 77 | if(uniqueValues.length <= 1) { 78 | const differentPosition = Dice.roll(length); 79 | const differentValue = Dice.rollDifferent(reelCount, uniqueValues[0]); 80 | result[differentPosition] = differentValue; 81 | } 82 | 83 | return result; 84 | } 85 | 86 | /** 87 | * Returns a result according to the following condition: 88 | * - All lines are SOLELY composed by THE SAME tile. 89 | * @param tileCount Amount of unique tile textures. 90 | * @param reelCount Amount of vertical rolling lines in this machine. 91 | */ 92 | private static allLinesResult(tileCount: number, reelCount: number): IResult { 93 | var result = { 94 | reels: SlotRoller.createEmptyMatrix(reelCount), 95 | equalLines: [], 96 | equalTile: Dice.roll(tileCount) 97 | }; 98 | 99 | // Saves equal lines 100 | for (let i = 0; i < this.REEL_LENGTH; ++i) { 101 | result.equalLines.push(i); 102 | } 103 | 104 | SlotRoller.populateMatrix(result, tileCount, reelCount); 105 | 106 | return result; 107 | } 108 | 109 | /** 110 | * Returns a result according to the following condition: 111 | * - All lines contain AT LEAST ONE different tile. 112 | * @param tileCount Amount of unique tile textures. 113 | * @param reelCount Amount of vertical rolling lines in this machine. 114 | */ 115 | private static noLinesResult(tileCount: number, reelCount: number): IResult { 116 | var result = { 117 | reels: SlotRoller.createEmptyMatrix(reelCount), 118 | equalLines: [], 119 | equalTile: -1 120 | }; 121 | 122 | SlotRoller.populateMatrix(result, tileCount, reelCount); 123 | 124 | return result; 125 | } 126 | 127 | /** 128 | * Returns a result according to the following condition: 129 | * - There is one line that contains AT LEAST ONE different tile. 130 | * @param tileCount Amount of unique tile textures. 131 | * @param reelCount Amount of vertical rolling lines in this machine. 132 | */ 133 | private static twoLinesResult(tileCount: number, reelCount: number): IResult { 134 | var result = { 135 | reels: SlotRoller.createEmptyMatrix(reelCount), 136 | equalLines: [], 137 | equalTile: Dice.roll(tileCount) 138 | }; 139 | 140 | // Saves equal lines 141 | const differentLine = Dice.roll(this.REEL_LENGTH); 142 | for (let i = 0; i < this.REEL_LENGTH; i++) { 143 | if (i != differentLine) { 144 | result.equalLines.push(i); 145 | } 146 | } 147 | 148 | SlotRoller.populateMatrix(result, tileCount, reelCount); 149 | 150 | return result; 151 | } 152 | 153 | /** 154 | * Returns a result according to the following condition: 155 | * - There is ONLY ONE line whose tiles are all the same. 156 | * @param tileCount Amount of unique tile textures. 157 | * @param reelCount Amount of vertical rolling lines in this machine. 158 | */ 159 | private static singleLineResult(tileCount: number, reelCount: number): IResult { 160 | var result = { 161 | reels: SlotRoller.createEmptyMatrix(reelCount), 162 | equalLines: [Dice.roll(this.REEL_LENGTH)], 163 | equalTile: Dice.roll(tileCount) 164 | }; 165 | 166 | SlotRoller.populateMatrix(result, tileCount, reelCount); 167 | 168 | return result; 169 | } 170 | 171 | /** 172 | * Populates a tile matrix from an IResult interface. 173 | * @param result Contains the matrix to edit. 174 | * @param tileCount Amount of unique tile textures. 175 | * @param reelCount Amount of vertical rolling lines in this machine. 176 | */ 177 | private static populateMatrix(result: IResult, tileCount: number, reelCount: number) { 178 | for (let i = 0; i < this.REEL_LENGTH; ++i) { 179 | if (result.equalLines.includes(i)) { 180 | for (let j = 0; j < reelCount; ++j) { 181 | result.reels[j][i] = result.equalTile; 182 | } 183 | } 184 | else { 185 | const unequalLine: Array = this.createUnequalLine(tileCount, reelCount); 186 | for (let j = 0; j < reelCount; ++j) { 187 | result.reels[j][i] = unequalLine[j]; 188 | } 189 | } 190 | } 191 | } 192 | 193 | } -------------------------------------------------------------------------------- /slotclient/assets/prefabs/Reel.prefab: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.Prefab", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_native": "", 7 | "data": { 8 | "__id__": 1 9 | }, 10 | "optimizationPolicy": 0, 11 | "asyncLoadAssets": false, 12 | "readonly": false 13 | }, 14 | { 15 | "__type__": "cc.Node", 16 | "_name": "Reel", 17 | "_objFlags": 0, 18 | "_parent": null, 19 | "_children": [ 20 | { 21 | "__id__": 2 22 | } 23 | ], 24 | "_active": true, 25 | "_level": 1, 26 | "_components": [ 27 | { 28 | "__id__": 25 29 | }, 30 | { 31 | "__id__": 26 32 | }, 33 | { 34 | "__id__": 27 35 | } 36 | ], 37 | "_prefab": { 38 | "__id__": 28 39 | }, 40 | "_opacity": 255, 41 | "_color": { 42 | "__type__": "cc.Color", 43 | "r": 255, 44 | "g": 255, 45 | "b": 255, 46 | "a": 255 47 | }, 48 | "_contentSize": { 49 | "__type__": "cc.Size", 50 | "width": 136, 51 | "height": 428 52 | }, 53 | "_anchorPoint": { 54 | "__type__": "cc.Vec2", 55 | "x": 0.5, 56 | "y": 0.5 57 | }, 58 | "_eulerAngles": { 59 | "__type__": "cc.Vec3", 60 | "x": 0, 61 | "y": 0, 62 | "z": 0 63 | }, 64 | "_skewX": 0, 65 | "_skewY": 0, 66 | "_is3DNode": false, 67 | "groupIndex": 0, 68 | "_id": "", 69 | "_trs": { 70 | "__type__": "TypedArray", 71 | "ctor": "Float64Array", 72 | "array": [ 73 | 0, 74 | 0, 75 | 0, 76 | 0, 77 | 0, 78 | 0, 79 | 0, 80 | 1, 81 | 1, 82 | 1 83 | ] 84 | } 85 | }, 86 | { 87 | "__type__": "cc.Node", 88 | "_name": "In", 89 | "_objFlags": 0, 90 | "_parent": { 91 | "__id__": 1 92 | }, 93 | "_children": [ 94 | { 95 | "__id__": 3 96 | }, 97 | { 98 | "__id__": 7 99 | }, 100 | { 101 | "__id__": 11 102 | }, 103 | { 104 | "__id__": 15 105 | }, 106 | { 107 | "__id__": 19 108 | } 109 | ], 110 | "_active": true, 111 | "_level": 5, 112 | "_components": [ 113 | { 114 | "__id__": 23 115 | } 116 | ], 117 | "_prefab": { 118 | "__id__": 24 119 | }, 120 | "_opacity": 255, 121 | "_color": { 122 | "__type__": "cc.Color", 123 | "r": 255, 124 | "g": 255, 125 | "b": 255, 126 | "a": 255 127 | }, 128 | "_contentSize": { 129 | "__type__": "cc.Size", 130 | "width": 136, 131 | "height": 712 132 | }, 133 | "_anchorPoint": { 134 | "__type__": "cc.Vec2", 135 | "x": 0.5, 136 | "y": 0.5 137 | }, 138 | "_eulerAngles": { 139 | "__type__": "cc.Vec3", 140 | "x": 0, 141 | "y": 0, 142 | "z": 0 143 | }, 144 | "_skewX": 0, 145 | "_skewY": 0, 146 | "_is3DNode": false, 147 | "groupIndex": 0, 148 | "_id": "", 149 | "_trs": { 150 | "__type__": "TypedArray", 151 | "ctor": "Float64Array", 152 | "array": [ 153 | 0, 154 | 0, 155 | 0, 156 | 0, 157 | 0, 158 | 0, 159 | 0, 160 | 1, 161 | 1, 162 | 1 163 | ] 164 | } 165 | }, 166 | { 167 | "__type__": "cc.Node", 168 | "_name": "Tile", 169 | "_objFlags": 0, 170 | "_parent": { 171 | "__id__": 2 172 | }, 173 | "_children": [], 174 | "_active": true, 175 | "_level": 6, 176 | "_components": [ 177 | { 178 | "__id__": 4 179 | }, 180 | { 181 | "__id__": 5 182 | } 183 | ], 184 | "_prefab": { 185 | "__id__": 6 186 | }, 187 | "_opacity": 255, 188 | "_color": { 189 | "__type__": "cc.Color", 190 | "r": 255, 191 | "g": 255, 192 | "b": 255, 193 | "a": 255 194 | }, 195 | "_contentSize": { 196 | "__type__": "cc.Size", 197 | "width": 136, 198 | "height": 136 199 | }, 200 | "_anchorPoint": { 201 | "__type__": "cc.Vec2", 202 | "x": 0.5, 203 | "y": 0.5 204 | }, 205 | "_eulerAngles": { 206 | "__type__": "cc.Vec3", 207 | "x": 0, 208 | "y": 0, 209 | "z": 0 210 | }, 211 | "_skewX": 0, 212 | "_skewY": 0, 213 | "_is3DNode": false, 214 | "groupIndex": 0, 215 | "_id": "", 216 | "_trs": { 217 | "__type__": "TypedArray", 218 | "ctor": "Float64Array", 219 | "array": [ 220 | 0, 221 | 288, 222 | 0, 223 | 0, 224 | 0, 225 | 0, 226 | 0, 227 | 1, 228 | 1, 229 | 1 230 | ] 231 | } 232 | }, 233 | { 234 | "__type__": "cc.Sprite", 235 | "_name": "", 236 | "_objFlags": 0, 237 | "node": { 238 | "__id__": 3 239 | }, 240 | "_enabled": true, 241 | "_materials": [ 242 | { 243 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 244 | } 245 | ], 246 | "_srcBlendFactor": 770, 247 | "_dstBlendFactor": 771, 248 | "_spriteFrame": { 249 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 250 | }, 251 | "_type": 0, 252 | "_sizeMode": 1, 253 | "_fillType": 0, 254 | "_fillCenter": { 255 | "__type__": "cc.Vec2", 256 | "x": 0, 257 | "y": 0 258 | }, 259 | "_fillStart": 0, 260 | "_fillRange": 0, 261 | "_isTrimmedMode": true, 262 | "_atlas": null, 263 | "_id": "" 264 | }, 265 | { 266 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 267 | "_name": "", 268 | "_objFlags": 0, 269 | "node": { 270 | "__id__": 3 271 | }, 272 | "_enabled": true, 273 | "textures": [ 274 | { 275 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 276 | }, 277 | { 278 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 279 | }, 280 | { 281 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 282 | }, 283 | { 284 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 285 | }, 286 | { 287 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 288 | }, 289 | { 290 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 291 | }, 292 | { 293 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 294 | }, 295 | { 296 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 297 | }, 298 | { 299 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 300 | }, 301 | { 302 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 303 | }, 304 | { 305 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 306 | }, 307 | { 308 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 309 | }, 310 | { 311 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 312 | }, 313 | { 314 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 315 | }, 316 | { 317 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 318 | }, 319 | { 320 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 321 | }, 322 | { 323 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 324 | }, 325 | { 326 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 327 | }, 328 | { 329 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 330 | }, 331 | { 332 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 333 | }, 334 | { 335 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 336 | }, 337 | { 338 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 339 | }, 340 | { 341 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 342 | }, 343 | { 344 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 345 | }, 346 | { 347 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 348 | }, 349 | { 350 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 351 | }, 352 | { 353 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 354 | }, 355 | { 356 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 357 | }, 358 | { 359 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 360 | }, 361 | { 362 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 363 | } 364 | ], 365 | "_id": "" 366 | }, 367 | { 368 | "__type__": "cc.PrefabInfo", 369 | "root": { 370 | "__id__": 1 371 | }, 372 | "asset": { 373 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 374 | }, 375 | "fileId": "5f/A4vx2NF1ohkRqxOHEcU", 376 | "sync": false 377 | }, 378 | { 379 | "__type__": "cc.Node", 380 | "_name": "Tile", 381 | "_objFlags": 0, 382 | "_parent": { 383 | "__id__": 2 384 | }, 385 | "_children": [], 386 | "_active": true, 387 | "_level": 6, 388 | "_components": [ 389 | { 390 | "__id__": 8 391 | }, 392 | { 393 | "__id__": 9 394 | } 395 | ], 396 | "_prefab": { 397 | "__id__": 10 398 | }, 399 | "_opacity": 255, 400 | "_color": { 401 | "__type__": "cc.Color", 402 | "r": 255, 403 | "g": 255, 404 | "b": 255, 405 | "a": 255 406 | }, 407 | "_contentSize": { 408 | "__type__": "cc.Size", 409 | "width": 136, 410 | "height": 136 411 | }, 412 | "_anchorPoint": { 413 | "__type__": "cc.Vec2", 414 | "x": 0.5, 415 | "y": 0.5 416 | }, 417 | "_eulerAngles": { 418 | "__type__": "cc.Vec3", 419 | "x": 0, 420 | "y": 0, 421 | "z": 0 422 | }, 423 | "_skewX": 0, 424 | "_skewY": 0, 425 | "_is3DNode": false, 426 | "groupIndex": 0, 427 | "_id": "", 428 | "_trs": { 429 | "__type__": "TypedArray", 430 | "ctor": "Float64Array", 431 | "array": [ 432 | 0, 433 | 144, 434 | 0, 435 | 0, 436 | 0, 437 | 0, 438 | 0, 439 | 1, 440 | 1, 441 | 1 442 | ] 443 | } 444 | }, 445 | { 446 | "__type__": "cc.Sprite", 447 | "_name": "", 448 | "_objFlags": 0, 449 | "node": { 450 | "__id__": 7 451 | }, 452 | "_enabled": true, 453 | "_materials": [ 454 | { 455 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 456 | } 457 | ], 458 | "_srcBlendFactor": 770, 459 | "_dstBlendFactor": 771, 460 | "_spriteFrame": { 461 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 462 | }, 463 | "_type": 0, 464 | "_sizeMode": 1, 465 | "_fillType": 0, 466 | "_fillCenter": { 467 | "__type__": "cc.Vec2", 468 | "x": 0, 469 | "y": 0 470 | }, 471 | "_fillStart": 0, 472 | "_fillRange": 0, 473 | "_isTrimmedMode": true, 474 | "_atlas": null, 475 | "_id": "" 476 | }, 477 | { 478 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 479 | "_name": "", 480 | "_objFlags": 0, 481 | "node": { 482 | "__id__": 7 483 | }, 484 | "_enabled": true, 485 | "textures": [ 486 | { 487 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 488 | }, 489 | { 490 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 491 | }, 492 | { 493 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 494 | }, 495 | { 496 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 497 | }, 498 | { 499 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 500 | }, 501 | { 502 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 503 | }, 504 | { 505 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 506 | }, 507 | { 508 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 509 | }, 510 | { 511 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 512 | }, 513 | { 514 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 515 | }, 516 | { 517 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 518 | }, 519 | { 520 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 521 | }, 522 | { 523 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 524 | }, 525 | { 526 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 527 | }, 528 | { 529 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 530 | }, 531 | { 532 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 533 | }, 534 | { 535 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 536 | }, 537 | { 538 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 539 | }, 540 | { 541 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 542 | }, 543 | { 544 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 545 | }, 546 | { 547 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 548 | }, 549 | { 550 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 551 | }, 552 | { 553 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 554 | }, 555 | { 556 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 557 | }, 558 | { 559 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 560 | }, 561 | { 562 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 563 | }, 564 | { 565 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 566 | }, 567 | { 568 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 569 | }, 570 | { 571 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 572 | }, 573 | { 574 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 575 | } 576 | ], 577 | "_id": "" 578 | }, 579 | { 580 | "__type__": "cc.PrefabInfo", 581 | "root": { 582 | "__id__": 1 583 | }, 584 | "asset": { 585 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 586 | }, 587 | "fileId": "97H0ox0Z5J9Y19401Ak0dB", 588 | "sync": false 589 | }, 590 | { 591 | "__type__": "cc.Node", 592 | "_name": "Tile", 593 | "_objFlags": 0, 594 | "_parent": { 595 | "__id__": 2 596 | }, 597 | "_children": [], 598 | "_active": true, 599 | "_level": 6, 600 | "_components": [ 601 | { 602 | "__id__": 12 603 | }, 604 | { 605 | "__id__": 13 606 | } 607 | ], 608 | "_prefab": { 609 | "__id__": 14 610 | }, 611 | "_opacity": 255, 612 | "_color": { 613 | "__type__": "cc.Color", 614 | "r": 255, 615 | "g": 255, 616 | "b": 255, 617 | "a": 255 618 | }, 619 | "_contentSize": { 620 | "__type__": "cc.Size", 621 | "width": 136, 622 | "height": 136 623 | }, 624 | "_anchorPoint": { 625 | "__type__": "cc.Vec2", 626 | "x": 0.5, 627 | "y": 0.5 628 | }, 629 | "_eulerAngles": { 630 | "__type__": "cc.Vec3", 631 | "x": 0, 632 | "y": 0, 633 | "z": 0 634 | }, 635 | "_skewX": 0, 636 | "_skewY": 0, 637 | "_is3DNode": false, 638 | "groupIndex": 0, 639 | "_id": "", 640 | "_trs": { 641 | "__type__": "TypedArray", 642 | "ctor": "Float64Array", 643 | "array": [ 644 | 0, 645 | 0, 646 | 0, 647 | 0, 648 | 0, 649 | 0, 650 | 0, 651 | 1, 652 | 1, 653 | 1 654 | ] 655 | } 656 | }, 657 | { 658 | "__type__": "cc.Sprite", 659 | "_name": "", 660 | "_objFlags": 0, 661 | "node": { 662 | "__id__": 11 663 | }, 664 | "_enabled": true, 665 | "_materials": [ 666 | { 667 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 668 | } 669 | ], 670 | "_srcBlendFactor": 770, 671 | "_dstBlendFactor": 771, 672 | "_spriteFrame": { 673 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 674 | }, 675 | "_type": 0, 676 | "_sizeMode": 1, 677 | "_fillType": 0, 678 | "_fillCenter": { 679 | "__type__": "cc.Vec2", 680 | "x": 0, 681 | "y": 0 682 | }, 683 | "_fillStart": 0, 684 | "_fillRange": 0, 685 | "_isTrimmedMode": true, 686 | "_atlas": null, 687 | "_id": "" 688 | }, 689 | { 690 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 691 | "_name": "", 692 | "_objFlags": 0, 693 | "node": { 694 | "__id__": 11 695 | }, 696 | "_enabled": true, 697 | "textures": [ 698 | { 699 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 700 | }, 701 | { 702 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 703 | }, 704 | { 705 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 706 | }, 707 | { 708 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 709 | }, 710 | { 711 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 712 | }, 713 | { 714 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 715 | }, 716 | { 717 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 718 | }, 719 | { 720 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 721 | }, 722 | { 723 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 724 | }, 725 | { 726 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 727 | }, 728 | { 729 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 730 | }, 731 | { 732 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 733 | }, 734 | { 735 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 736 | }, 737 | { 738 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 739 | }, 740 | { 741 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 742 | }, 743 | { 744 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 745 | }, 746 | { 747 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 748 | }, 749 | { 750 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 751 | }, 752 | { 753 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 754 | }, 755 | { 756 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 757 | }, 758 | { 759 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 760 | }, 761 | { 762 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 763 | }, 764 | { 765 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 766 | }, 767 | { 768 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 769 | }, 770 | { 771 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 772 | }, 773 | { 774 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 775 | }, 776 | { 777 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 778 | }, 779 | { 780 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 781 | }, 782 | { 783 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 784 | }, 785 | { 786 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 787 | } 788 | ], 789 | "_id": "" 790 | }, 791 | { 792 | "__type__": "cc.PrefabInfo", 793 | "root": { 794 | "__id__": 1 795 | }, 796 | "asset": { 797 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 798 | }, 799 | "fileId": "61jiz9mrRAVaQ6c+TtBxeW", 800 | "sync": false 801 | }, 802 | { 803 | "__type__": "cc.Node", 804 | "_name": "Tile", 805 | "_objFlags": 0, 806 | "_parent": { 807 | "__id__": 2 808 | }, 809 | "_children": [], 810 | "_active": true, 811 | "_level": 6, 812 | "_components": [ 813 | { 814 | "__id__": 16 815 | }, 816 | { 817 | "__id__": 17 818 | } 819 | ], 820 | "_prefab": { 821 | "__id__": 18 822 | }, 823 | "_opacity": 255, 824 | "_color": { 825 | "__type__": "cc.Color", 826 | "r": 255, 827 | "g": 255, 828 | "b": 255, 829 | "a": 255 830 | }, 831 | "_contentSize": { 832 | "__type__": "cc.Size", 833 | "width": 136, 834 | "height": 136 835 | }, 836 | "_anchorPoint": { 837 | "__type__": "cc.Vec2", 838 | "x": 0.5, 839 | "y": 0.5 840 | }, 841 | "_eulerAngles": { 842 | "__type__": "cc.Vec3", 843 | "x": 0, 844 | "y": 0, 845 | "z": 0 846 | }, 847 | "_skewX": 0, 848 | "_skewY": 0, 849 | "_is3DNode": false, 850 | "groupIndex": 0, 851 | "_id": "", 852 | "_trs": { 853 | "__type__": "TypedArray", 854 | "ctor": "Float64Array", 855 | "array": [ 856 | 0, 857 | -144, 858 | 0, 859 | 0, 860 | 0, 861 | 0, 862 | 0, 863 | 1, 864 | 1, 865 | 1 866 | ] 867 | } 868 | }, 869 | { 870 | "__type__": "cc.Sprite", 871 | "_name": "", 872 | "_objFlags": 0, 873 | "node": { 874 | "__id__": 15 875 | }, 876 | "_enabled": true, 877 | "_materials": [ 878 | { 879 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 880 | } 881 | ], 882 | "_srcBlendFactor": 770, 883 | "_dstBlendFactor": 771, 884 | "_spriteFrame": { 885 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 886 | }, 887 | "_type": 0, 888 | "_sizeMode": 1, 889 | "_fillType": 0, 890 | "_fillCenter": { 891 | "__type__": "cc.Vec2", 892 | "x": 0, 893 | "y": 0 894 | }, 895 | "_fillStart": 0, 896 | "_fillRange": 0, 897 | "_isTrimmedMode": true, 898 | "_atlas": null, 899 | "_id": "" 900 | }, 901 | { 902 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 903 | "_name": "", 904 | "_objFlags": 0, 905 | "node": { 906 | "__id__": 15 907 | }, 908 | "_enabled": true, 909 | "textures": [ 910 | { 911 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 912 | }, 913 | { 914 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 915 | }, 916 | { 917 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 918 | }, 919 | { 920 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 921 | }, 922 | { 923 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 924 | }, 925 | { 926 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 927 | }, 928 | { 929 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 930 | }, 931 | { 932 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 933 | }, 934 | { 935 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 936 | }, 937 | { 938 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 939 | }, 940 | { 941 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 942 | }, 943 | { 944 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 945 | }, 946 | { 947 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 948 | }, 949 | { 950 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 951 | }, 952 | { 953 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 954 | }, 955 | { 956 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 957 | }, 958 | { 959 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 960 | }, 961 | { 962 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 963 | }, 964 | { 965 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 966 | }, 967 | { 968 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 969 | }, 970 | { 971 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 972 | }, 973 | { 974 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 975 | }, 976 | { 977 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 978 | }, 979 | { 980 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 981 | }, 982 | { 983 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 984 | }, 985 | { 986 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 987 | }, 988 | { 989 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 990 | }, 991 | { 992 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 993 | }, 994 | { 995 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 996 | }, 997 | { 998 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 999 | } 1000 | ], 1001 | "_id": "" 1002 | }, 1003 | { 1004 | "__type__": "cc.PrefabInfo", 1005 | "root": { 1006 | "__id__": 1 1007 | }, 1008 | "asset": { 1009 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 1010 | }, 1011 | "fileId": "aalQxUUv1CC4c7Ov11D9oy", 1012 | "sync": false 1013 | }, 1014 | { 1015 | "__type__": "cc.Node", 1016 | "_name": "Tile", 1017 | "_objFlags": 0, 1018 | "_parent": { 1019 | "__id__": 2 1020 | }, 1021 | "_children": [], 1022 | "_active": true, 1023 | "_level": 6, 1024 | "_components": [ 1025 | { 1026 | "__id__": 20 1027 | }, 1028 | { 1029 | "__id__": 21 1030 | } 1031 | ], 1032 | "_prefab": { 1033 | "__id__": 22 1034 | }, 1035 | "_opacity": 255, 1036 | "_color": { 1037 | "__type__": "cc.Color", 1038 | "r": 255, 1039 | "g": 255, 1040 | "b": 255, 1041 | "a": 255 1042 | }, 1043 | "_contentSize": { 1044 | "__type__": "cc.Size", 1045 | "width": 136, 1046 | "height": 136 1047 | }, 1048 | "_anchorPoint": { 1049 | "__type__": "cc.Vec2", 1050 | "x": 0.5, 1051 | "y": 0.5 1052 | }, 1053 | "_eulerAngles": { 1054 | "__type__": "cc.Vec3", 1055 | "x": 0, 1056 | "y": 0, 1057 | "z": 0 1058 | }, 1059 | "_skewX": 0, 1060 | "_skewY": 0, 1061 | "_is3DNode": false, 1062 | "groupIndex": 0, 1063 | "_id": "", 1064 | "_trs": { 1065 | "__type__": "TypedArray", 1066 | "ctor": "Float64Array", 1067 | "array": [ 1068 | 0, 1069 | -288, 1070 | 0, 1071 | 0, 1072 | 0, 1073 | 0, 1074 | 0, 1075 | 1, 1076 | 1, 1077 | 1 1078 | ] 1079 | } 1080 | }, 1081 | { 1082 | "__type__": "cc.Sprite", 1083 | "_name": "", 1084 | "_objFlags": 0, 1085 | "node": { 1086 | "__id__": 19 1087 | }, 1088 | "_enabled": true, 1089 | "_materials": [ 1090 | { 1091 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 1092 | } 1093 | ], 1094 | "_srcBlendFactor": 770, 1095 | "_dstBlendFactor": 771, 1096 | "_spriteFrame": { 1097 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 1098 | }, 1099 | "_type": 0, 1100 | "_sizeMode": 1, 1101 | "_fillType": 0, 1102 | "_fillCenter": { 1103 | "__type__": "cc.Vec2", 1104 | "x": 0, 1105 | "y": 0 1106 | }, 1107 | "_fillStart": 0, 1108 | "_fillRange": 0, 1109 | "_isTrimmedMode": true, 1110 | "_atlas": null, 1111 | "_id": "" 1112 | }, 1113 | { 1114 | "__type__": "23da8goMpRLyoF0XDrNCKrG", 1115 | "_name": "", 1116 | "_objFlags": 0, 1117 | "node": { 1118 | "__id__": 19 1119 | }, 1120 | "_enabled": true, 1121 | "textures": [ 1122 | { 1123 | "__uuid__": "28b1e3ee-1822-44ff-b749-b2bfa52f02f5" 1124 | }, 1125 | { 1126 | "__uuid__": "55cf8e3a-dfae-4041-bd35-1306dca73547" 1127 | }, 1128 | { 1129 | "__uuid__": "48726a40-672e-4b15-b953-838ce322c218" 1130 | }, 1131 | { 1132 | "__uuid__": "6d494b1a-e6fe-4d13-86ff-4a3953146c6b" 1133 | }, 1134 | { 1135 | "__uuid__": "34b051c7-76cc-4d13-876e-67b15741f94c" 1136 | }, 1137 | { 1138 | "__uuid__": "e0ae39e1-c25f-4b58-af5a-143f385d47e3" 1139 | }, 1140 | { 1141 | "__uuid__": "63cfa158-f76f-4a47-b2e8-170537d7e43b" 1142 | }, 1143 | { 1144 | "__uuid__": "d688f49d-daab-47fa-8038-58742e6cf4ce" 1145 | }, 1146 | { 1147 | "__uuid__": "bb0d4765-6fdd-4eb3-a802-a26832e215ee" 1148 | }, 1149 | { 1150 | "__uuid__": "371916fd-794e-4b6a-b904-db4e8d076ef8" 1151 | }, 1152 | { 1153 | "__uuid__": "0bcd940a-3ae0-40f7-9837-b5dec07be0bb" 1154 | }, 1155 | { 1156 | "__uuid__": "b9e28534-5966-4d8e-b602-e16d61d8b663" 1157 | }, 1158 | { 1159 | "__uuid__": "0c0d5856-1dbb-4580-8a64-cf59e91c69ef" 1160 | }, 1161 | { 1162 | "__uuid__": "b60ff6d7-1798-4316-a566-9211fe643301" 1163 | }, 1164 | { 1165 | "__uuid__": "60cb815c-d274-4c7f-b4ff-2f7bc4e096d8" 1166 | }, 1167 | { 1168 | "__uuid__": "f28392d8-3f62-4a58-9e9d-d07c8df5c4ae" 1169 | }, 1170 | { 1171 | "__uuid__": "8b0338f0-eb51-44b1-9e61-ea9df8ce6d16" 1172 | }, 1173 | { 1174 | "__uuid__": "c792dfa8-5643-4125-b096-c02fa0d3c997" 1175 | }, 1176 | { 1177 | "__uuid__": "9796ded2-6e47-4214-886d-78626f61f790" 1178 | }, 1179 | { 1180 | "__uuid__": "eb6185ff-8b0b-425c-be61-3f4c68117cda" 1181 | }, 1182 | { 1183 | "__uuid__": "fe8273e0-29b0-4610-a57f-b7b81065530e" 1184 | }, 1185 | { 1186 | "__uuid__": "d5ce4640-70fa-490f-a8b3-61c207a42cec" 1187 | }, 1188 | { 1189 | "__uuid__": "4bcfb4d0-645c-4b67-a8ce-a16d44c6081f" 1190 | }, 1191 | { 1192 | "__uuid__": "756e8ce5-aa82-410d-9e91-e81752026993" 1193 | }, 1194 | { 1195 | "__uuid__": "feb3a015-4774-4a5e-9464-b9c601d24779" 1196 | }, 1197 | { 1198 | "__uuid__": "66e59b67-a138-488f-aacc-32e178b14120" 1199 | }, 1200 | { 1201 | "__uuid__": "fd3d6391-7f83-4172-9d3b-f7c08e608069" 1202 | }, 1203 | { 1204 | "__uuid__": "3a646fc7-dfdf-4a9e-b940-582881319694" 1205 | }, 1206 | { 1207 | "__uuid__": "1660ace2-a6ae-4315-aed5-d7a4bc2cd72f" 1208 | }, 1209 | { 1210 | "__uuid__": "26a4af08-1209-403f-9a44-68fbde1047bd" 1211 | } 1212 | ], 1213 | "_id": "" 1214 | }, 1215 | { 1216 | "__type__": "cc.PrefabInfo", 1217 | "root": { 1218 | "__id__": 1 1219 | }, 1220 | "asset": { 1221 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 1222 | }, 1223 | "fileId": "21lXYmFMpN6Ys4ec35ayRf", 1224 | "sync": false 1225 | }, 1226 | { 1227 | "__type__": "cc.Layout", 1228 | "_name": "", 1229 | "_objFlags": 0, 1230 | "node": { 1231 | "__id__": 2 1232 | }, 1233 | "_enabled": true, 1234 | "_layoutSize": { 1235 | "__type__": "cc.Size", 1236 | "width": 136, 1237 | "height": 712 1238 | }, 1239 | "_resize": 1, 1240 | "_N$layoutType": 3, 1241 | "_N$padding": 0, 1242 | "_N$cellSize": { 1243 | "__type__": "cc.Size", 1244 | "width": 40, 1245 | "height": 40 1246 | }, 1247 | "_N$startAxis": 0, 1248 | "_N$paddingLeft": 0, 1249 | "_N$paddingRight": 0, 1250 | "_N$paddingTop": 0, 1251 | "_N$paddingBottom": 0, 1252 | "_N$spacingX": 0, 1253 | "_N$spacingY": 8, 1254 | "_N$verticalDirection": 1, 1255 | "_N$horizontalDirection": 0, 1256 | "_N$affectedByScale": false, 1257 | "_id": "" 1258 | }, 1259 | { 1260 | "__type__": "cc.PrefabInfo", 1261 | "root": { 1262 | "__id__": 1 1263 | }, 1264 | "asset": { 1265 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 1266 | }, 1267 | "fileId": "b8+gWPvPRPwJi3UrCBBlic", 1268 | "sync": false 1269 | }, 1270 | { 1271 | "__type__": "cc.Mask", 1272 | "_name": "", 1273 | "_objFlags": 0, 1274 | "node": { 1275 | "__id__": 1 1276 | }, 1277 | "_enabled": true, 1278 | "_materials": [ 1279 | { 1280 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 1281 | } 1282 | ], 1283 | "_spriteFrame": null, 1284 | "_type": 0, 1285 | "_segments": 64, 1286 | "_N$alphaThreshold": 0, 1287 | "_N$inverted": false, 1288 | "_id": "" 1289 | }, 1290 | { 1291 | "__type__": "cc.AudioSource", 1292 | "_name": "", 1293 | "_objFlags": 0, 1294 | "node": { 1295 | "__id__": 1 1296 | }, 1297 | "_enabled": true, 1298 | "_clip": { 1299 | "__uuid__": "97be5907-0097-4bc0-a2dd-975620908d32" 1300 | }, 1301 | "_volume": 1, 1302 | "_mute": false, 1303 | "_loop": false, 1304 | "playOnLoad": false, 1305 | "preload": false, 1306 | "_id": "" 1307 | }, 1308 | { 1309 | "__type__": "91e54zzGJ5Os6qxY73m4+B5", 1310 | "_name": "", 1311 | "_objFlags": 0, 1312 | "node": { 1313 | "__id__": 1 1314 | }, 1315 | "_enabled": true, 1316 | "reelAnchor": { 1317 | "__id__": 2 1318 | }, 1319 | "spinDirection": 1, 1320 | "tiles": [ 1321 | { 1322 | "__id__": 3 1323 | }, 1324 | { 1325 | "__id__": 7 1326 | }, 1327 | { 1328 | "__id__": 11 1329 | }, 1330 | { 1331 | "__id__": 15 1332 | }, 1333 | { 1334 | "__id__": 19 1335 | } 1336 | ], 1337 | "_tilePrefab": { 1338 | "__uuid__": "a75a6cdf-ea63-4dea-af63-4cc3bf7305ac" 1339 | }, 1340 | "tileSize": 136, 1341 | "tileDistance": 0, 1342 | "_id": "" 1343 | }, 1344 | { 1345 | "__type__": "cc.PrefabInfo", 1346 | "root": { 1347 | "__id__": 1 1348 | }, 1349 | "asset": { 1350 | "__uuid__": "6fc8688c-db9f-4c20-8b71-e6df9b2f3af8" 1351 | }, 1352 | "fileId": "acE7/zuHtA+KtVgMCqZNpZ", 1353 | "sync": false 1354 | } 1355 | ] -------------------------------------------------------------------------------- /slotclient/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slotmock", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.8.3", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 10 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.8.3" 14 | } 15 | }, 16 | "@babel/highlight": { 17 | "version": "7.8.3", 18 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", 19 | "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", 20 | "dev": true, 21 | "requires": { 22 | "chalk": "^2.0.0", 23 | "esutils": "^2.0.2", 24 | "js-tokens": "^4.0.0" 25 | } 26 | }, 27 | "@types/eslint-visitor-keys": { 28 | "version": "1.0.0", 29 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 30 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 31 | "dev": true 32 | }, 33 | "@types/json-schema": { 34 | "version": "7.0.4", 35 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", 36 | "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", 37 | "dev": true 38 | }, 39 | "@typescript-eslint/eslint-plugin": { 40 | "version": "2.23.0", 41 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.23.0.tgz", 42 | "integrity": "sha512-8iA4FvRsz8qTjR0L/nK9RcRUN3QtIHQiOm69FzV7WS3SE+7P7DyGGwh3k4UNR2JBbk+Ej2Io+jLAaqKibNhmtw==", 43 | "dev": true, 44 | "requires": { 45 | "@typescript-eslint/experimental-utils": "2.23.0", 46 | "eslint-utils": "^1.4.3", 47 | "functional-red-black-tree": "^1.0.1", 48 | "regexpp": "^3.0.0", 49 | "tsutils": "^3.17.1" 50 | } 51 | }, 52 | "@typescript-eslint/experimental-utils": { 53 | "version": "2.23.0", 54 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.23.0.tgz", 55 | "integrity": "sha512-OswxY59RcXH3NNPmq+4Kis2CYZPurRU6mG5xPcn24CjFyfdVli5mySwZz/g/xDbJXgDsYqNGq7enV0IziWGXVQ==", 56 | "dev": true, 57 | "requires": { 58 | "@types/json-schema": "^7.0.3", 59 | "@typescript-eslint/typescript-estree": "2.23.0", 60 | "eslint-scope": "^5.0.0" 61 | } 62 | }, 63 | "@typescript-eslint/parser": { 64 | "version": "2.23.0", 65 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.23.0.tgz", 66 | "integrity": "sha512-k61pn/Nepk43qa1oLMiyqApC6x5eP5ddPz6VUYXCAuXxbmRLqkPYzkFRKl42ltxzB2luvejlVncrEpflgQoSUg==", 67 | "dev": true, 68 | "requires": { 69 | "@types/eslint-visitor-keys": "^1.0.0", 70 | "@typescript-eslint/experimental-utils": "2.23.0", 71 | "@typescript-eslint/typescript-estree": "2.23.0", 72 | "eslint-visitor-keys": "^1.1.0" 73 | } 74 | }, 75 | "@typescript-eslint/typescript-estree": { 76 | "version": "2.23.0", 77 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.23.0.tgz", 78 | "integrity": "sha512-pmf7IlmvXdlEXvE/JWNNJpEvwBV59wtJqA8MLAxMKLXNKVRC3HZBXR/SlZLPWTCcwOSg9IM7GeRSV3SIerGVqw==", 79 | "dev": true, 80 | "requires": { 81 | "debug": "^4.1.1", 82 | "eslint-visitor-keys": "^1.1.0", 83 | "glob": "^7.1.6", 84 | "is-glob": "^4.0.1", 85 | "lodash": "^4.17.15", 86 | "semver": "^6.3.0", 87 | "tsutils": "^3.17.1" 88 | } 89 | }, 90 | "acorn": { 91 | "version": "7.1.1", 92 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 93 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", 94 | "dev": true 95 | }, 96 | "acorn-jsx": { 97 | "version": "5.2.0", 98 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 99 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 100 | "dev": true 101 | }, 102 | "ajv": { 103 | "version": "6.12.0", 104 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", 105 | "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", 106 | "dev": true, 107 | "requires": { 108 | "fast-deep-equal": "^3.1.1", 109 | "fast-json-stable-stringify": "^2.0.0", 110 | "json-schema-traverse": "^0.4.1", 111 | "uri-js": "^4.2.2" 112 | } 113 | }, 114 | "ansi-escapes": { 115 | "version": "3.2.0", 116 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 117 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 118 | "dev": true 119 | }, 120 | "ansi-regex": { 121 | "version": "3.0.0", 122 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 123 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 124 | "dev": true 125 | }, 126 | "ansi-styles": { 127 | "version": "3.2.1", 128 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 129 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 130 | "dev": true, 131 | "requires": { 132 | "color-convert": "^1.9.0" 133 | } 134 | }, 135 | "argparse": { 136 | "version": "1.0.10", 137 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 138 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 139 | "dev": true, 140 | "requires": { 141 | "sprintf-js": "~1.0.2" 142 | } 143 | }, 144 | "array-includes": { 145 | "version": "3.1.1", 146 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", 147 | "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", 148 | "dev": true, 149 | "requires": { 150 | "define-properties": "^1.1.3", 151 | "es-abstract": "^1.17.0", 152 | "is-string": "^1.0.5" 153 | } 154 | }, 155 | "astral-regex": { 156 | "version": "1.0.0", 157 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 158 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 159 | "dev": true 160 | }, 161 | "async": { 162 | "version": "2.6.3", 163 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", 164 | "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", 165 | "requires": { 166 | "lodash": "^4.17.14" 167 | } 168 | }, 169 | "axios": { 170 | "version": "0.19.2", 171 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", 172 | "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", 173 | "requires": { 174 | "follow-redirects": "1.5.10" 175 | } 176 | }, 177 | "balanced-match": { 178 | "version": "1.0.0", 179 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 180 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 181 | "dev": true 182 | }, 183 | "brace-expansion": { 184 | "version": "1.1.11", 185 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 186 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 187 | "dev": true, 188 | "requires": { 189 | "balanced-match": "^1.0.0", 190 | "concat-map": "0.0.1" 191 | } 192 | }, 193 | "callsites": { 194 | "version": "3.1.0", 195 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 196 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 197 | "dev": true 198 | }, 199 | "chalk": { 200 | "version": "2.4.2", 201 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 202 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 203 | "dev": true, 204 | "requires": { 205 | "ansi-styles": "^3.2.1", 206 | "escape-string-regexp": "^1.0.5", 207 | "supports-color": "^5.3.0" 208 | } 209 | }, 210 | "chardet": { 211 | "version": "0.7.0", 212 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 213 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 214 | "dev": true 215 | }, 216 | "cli-cursor": { 217 | "version": "2.1.0", 218 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 219 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 220 | "dev": true, 221 | "requires": { 222 | "restore-cursor": "^2.0.0" 223 | } 224 | }, 225 | "cli-width": { 226 | "version": "2.2.0", 227 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 228 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 229 | "dev": true 230 | }, 231 | "color-convert": { 232 | "version": "1.9.3", 233 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 234 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 235 | "dev": true, 236 | "requires": { 237 | "color-name": "1.1.3" 238 | } 239 | }, 240 | "color-name": { 241 | "version": "1.1.3", 242 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 243 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 244 | "dev": true 245 | }, 246 | "concat-map": { 247 | "version": "0.0.1", 248 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 249 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 250 | "dev": true 251 | }, 252 | "confusing-browser-globals": { 253 | "version": "1.0.9", 254 | "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", 255 | "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", 256 | "dev": true 257 | }, 258 | "contains-path": { 259 | "version": "0.1.0", 260 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 261 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 262 | "dev": true 263 | }, 264 | "cross-spawn": { 265 | "version": "6.0.5", 266 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 267 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 268 | "dev": true, 269 | "requires": { 270 | "nice-try": "^1.0.4", 271 | "path-key": "^2.0.1", 272 | "semver": "^5.5.0", 273 | "shebang-command": "^1.2.0", 274 | "which": "^1.2.9" 275 | }, 276 | "dependencies": { 277 | "semver": { 278 | "version": "5.7.1", 279 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 280 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 281 | "dev": true 282 | } 283 | } 284 | }, 285 | "debug": { 286 | "version": "4.1.1", 287 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 288 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 289 | "dev": true, 290 | "requires": { 291 | "ms": "^2.1.1" 292 | } 293 | }, 294 | "deep-is": { 295 | "version": "0.1.3", 296 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 297 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 298 | "dev": true 299 | }, 300 | "define-properties": { 301 | "version": "1.1.3", 302 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 303 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 304 | "dev": true, 305 | "requires": { 306 | "object-keys": "^1.0.12" 307 | } 308 | }, 309 | "doctrine": { 310 | "version": "3.0.0", 311 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 312 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 313 | "dev": true, 314 | "requires": { 315 | "esutils": "^2.0.2" 316 | } 317 | }, 318 | "duplexer": { 319 | "version": "0.1.1", 320 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 321 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" 322 | }, 323 | "emoji-regex": { 324 | "version": "7.0.3", 325 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 326 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 327 | "dev": true 328 | }, 329 | "error-ex": { 330 | "version": "1.3.2", 331 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 332 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 333 | "dev": true, 334 | "requires": { 335 | "is-arrayish": "^0.2.1" 336 | } 337 | }, 338 | "es-abstract": { 339 | "version": "1.17.4", 340 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", 341 | "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", 342 | "dev": true, 343 | "requires": { 344 | "es-to-primitive": "^1.2.1", 345 | "function-bind": "^1.1.1", 346 | "has": "^1.0.3", 347 | "has-symbols": "^1.0.1", 348 | "is-callable": "^1.1.5", 349 | "is-regex": "^1.0.5", 350 | "object-inspect": "^1.7.0", 351 | "object-keys": "^1.1.1", 352 | "object.assign": "^4.1.0", 353 | "string.prototype.trimleft": "^2.1.1", 354 | "string.prototype.trimright": "^2.1.1" 355 | } 356 | }, 357 | "es-to-primitive": { 358 | "version": "1.2.1", 359 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 360 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 361 | "dev": true, 362 | "requires": { 363 | "is-callable": "^1.1.4", 364 | "is-date-object": "^1.0.1", 365 | "is-symbol": "^1.0.2" 366 | } 367 | }, 368 | "escape-string-regexp": { 369 | "version": "1.0.5", 370 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 371 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 372 | "dev": true 373 | }, 374 | "eslint": { 375 | "version": "6.1.0", 376 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz", 377 | "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==", 378 | "dev": true, 379 | "requires": { 380 | "@babel/code-frame": "^7.0.0", 381 | "ajv": "^6.10.0", 382 | "chalk": "^2.1.0", 383 | "cross-spawn": "^6.0.5", 384 | "debug": "^4.0.1", 385 | "doctrine": "^3.0.0", 386 | "eslint-scope": "^5.0.0", 387 | "eslint-utils": "^1.3.1", 388 | "eslint-visitor-keys": "^1.0.0", 389 | "espree": "^6.0.0", 390 | "esquery": "^1.0.1", 391 | "esutils": "^2.0.2", 392 | "file-entry-cache": "^5.0.1", 393 | "functional-red-black-tree": "^1.0.1", 394 | "glob-parent": "^5.0.0", 395 | "globals": "^11.7.0", 396 | "ignore": "^4.0.6", 397 | "import-fresh": "^3.0.0", 398 | "imurmurhash": "^0.1.4", 399 | "inquirer": "^6.4.1", 400 | "is-glob": "^4.0.0", 401 | "js-yaml": "^3.13.1", 402 | "json-stable-stringify-without-jsonify": "^1.0.1", 403 | "levn": "^0.3.0", 404 | "lodash": "^4.17.14", 405 | "minimatch": "^3.0.4", 406 | "mkdirp": "^0.5.1", 407 | "natural-compare": "^1.4.0", 408 | "optionator": "^0.8.2", 409 | "progress": "^2.0.0", 410 | "regexpp": "^2.0.1", 411 | "semver": "^6.1.2", 412 | "strip-ansi": "^5.2.0", 413 | "strip-json-comments": "^3.0.1", 414 | "table": "^5.2.3", 415 | "text-table": "^0.2.0", 416 | "v8-compile-cache": "^2.0.3" 417 | }, 418 | "dependencies": { 419 | "regexpp": { 420 | "version": "2.0.1", 421 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 422 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 423 | "dev": true 424 | } 425 | } 426 | }, 427 | "eslint-config-airbnb-base": { 428 | "version": "14.0.0", 429 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz", 430 | "integrity": "sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==", 431 | "dev": true, 432 | "requires": { 433 | "confusing-browser-globals": "^1.0.7", 434 | "object.assign": "^4.1.0", 435 | "object.entries": "^1.1.0" 436 | } 437 | }, 438 | "eslint-config-prettier": { 439 | "version": "6.10.0", 440 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", 441 | "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", 442 | "dev": true, 443 | "requires": { 444 | "get-stdin": "^6.0.0" 445 | } 446 | }, 447 | "eslint-import-resolver-node": { 448 | "version": "0.3.3", 449 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", 450 | "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", 451 | "dev": true, 452 | "requires": { 453 | "debug": "^2.6.9", 454 | "resolve": "^1.13.1" 455 | }, 456 | "dependencies": { 457 | "debug": { 458 | "version": "2.6.9", 459 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 460 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 461 | "dev": true, 462 | "requires": { 463 | "ms": "2.0.0" 464 | } 465 | }, 466 | "ms": { 467 | "version": "2.0.0", 468 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 469 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 470 | "dev": true 471 | } 472 | } 473 | }, 474 | "eslint-module-utils": { 475 | "version": "2.5.2", 476 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", 477 | "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", 478 | "dev": true, 479 | "requires": { 480 | "debug": "^2.6.9", 481 | "pkg-dir": "^2.0.0" 482 | }, 483 | "dependencies": { 484 | "debug": { 485 | "version": "2.6.9", 486 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 487 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 488 | "dev": true, 489 | "requires": { 490 | "ms": "2.0.0" 491 | } 492 | }, 493 | "ms": { 494 | "version": "2.0.0", 495 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 496 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 497 | "dev": true 498 | } 499 | } 500 | }, 501 | "eslint-plugin-import": { 502 | "version": "2.18.2", 503 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", 504 | "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", 505 | "dev": true, 506 | "requires": { 507 | "array-includes": "^3.0.3", 508 | "contains-path": "^0.1.0", 509 | "debug": "^2.6.9", 510 | "doctrine": "1.5.0", 511 | "eslint-import-resolver-node": "^0.3.2", 512 | "eslint-module-utils": "^2.4.0", 513 | "has": "^1.0.3", 514 | "minimatch": "^3.0.4", 515 | "object.values": "^1.1.0", 516 | "read-pkg-up": "^2.0.0", 517 | "resolve": "^1.11.0" 518 | }, 519 | "dependencies": { 520 | "debug": { 521 | "version": "2.6.9", 522 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 523 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 524 | "dev": true, 525 | "requires": { 526 | "ms": "2.0.0" 527 | } 528 | }, 529 | "doctrine": { 530 | "version": "1.5.0", 531 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 532 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 533 | "dev": true, 534 | "requires": { 535 | "esutils": "^2.0.2", 536 | "isarray": "^1.0.0" 537 | } 538 | }, 539 | "ms": { 540 | "version": "2.0.0", 541 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 542 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 543 | "dev": true 544 | } 545 | } 546 | }, 547 | "eslint-plugin-prettier": { 548 | "version": "3.1.2", 549 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", 550 | "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", 551 | "dev": true, 552 | "requires": { 553 | "prettier-linter-helpers": "^1.0.0" 554 | } 555 | }, 556 | "eslint-scope": { 557 | "version": "5.0.0", 558 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 559 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 560 | "dev": true, 561 | "requires": { 562 | "esrecurse": "^4.1.0", 563 | "estraverse": "^4.1.1" 564 | } 565 | }, 566 | "eslint-utils": { 567 | "version": "1.4.3", 568 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 569 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 570 | "dev": true, 571 | "requires": { 572 | "eslint-visitor-keys": "^1.1.0" 573 | } 574 | }, 575 | "eslint-visitor-keys": { 576 | "version": "1.1.0", 577 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 578 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 579 | "dev": true 580 | }, 581 | "espree": { 582 | "version": "6.2.1", 583 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 584 | "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 585 | "dev": true, 586 | "requires": { 587 | "acorn": "^7.1.1", 588 | "acorn-jsx": "^5.2.0", 589 | "eslint-visitor-keys": "^1.1.0" 590 | } 591 | }, 592 | "esprima": { 593 | "version": "4.0.1", 594 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 595 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 596 | "dev": true 597 | }, 598 | "esquery": { 599 | "version": "1.1.0", 600 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz", 601 | "integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==", 602 | "dev": true, 603 | "requires": { 604 | "estraverse": "^4.0.0" 605 | } 606 | }, 607 | "esrecurse": { 608 | "version": "4.2.1", 609 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 610 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 611 | "dev": true, 612 | "requires": { 613 | "estraverse": "^4.1.0" 614 | } 615 | }, 616 | "estraverse": { 617 | "version": "4.3.0", 618 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 619 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 620 | "dev": true 621 | }, 622 | "esutils": { 623 | "version": "2.0.3", 624 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 625 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 626 | "dev": true 627 | }, 628 | "event-stream": { 629 | "version": "4.0.1", 630 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", 631 | "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", 632 | "requires": { 633 | "duplexer": "^0.1.1", 634 | "from": "^0.1.7", 635 | "map-stream": "0.0.7", 636 | "pause-stream": "^0.0.11", 637 | "split": "^1.0.1", 638 | "stream-combiner": "^0.2.2", 639 | "through": "^2.3.8" 640 | } 641 | }, 642 | "external-editor": { 643 | "version": "3.1.0", 644 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 645 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 646 | "dev": true, 647 | "requires": { 648 | "chardet": "^0.7.0", 649 | "iconv-lite": "^0.4.24", 650 | "tmp": "^0.0.33" 651 | } 652 | }, 653 | "fast-deep-equal": { 654 | "version": "3.1.1", 655 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 656 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 657 | "dev": true 658 | }, 659 | "fast-diff": { 660 | "version": "1.2.0", 661 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 662 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 663 | "dev": true 664 | }, 665 | "fast-json-stable-stringify": { 666 | "version": "2.1.0", 667 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 668 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 669 | "dev": true 670 | }, 671 | "fast-levenshtein": { 672 | "version": "2.0.6", 673 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 674 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 675 | "dev": true 676 | }, 677 | "figures": { 678 | "version": "2.0.0", 679 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 680 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 681 | "dev": true, 682 | "requires": { 683 | "escape-string-regexp": "^1.0.5" 684 | } 685 | }, 686 | "file-entry-cache": { 687 | "version": "5.0.1", 688 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 689 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 690 | "dev": true, 691 | "requires": { 692 | "flat-cache": "^2.0.1" 693 | } 694 | }, 695 | "find-up": { 696 | "version": "2.1.0", 697 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 698 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 699 | "dev": true, 700 | "requires": { 701 | "locate-path": "^2.0.0" 702 | } 703 | }, 704 | "flat-cache": { 705 | "version": "2.0.1", 706 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 707 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 708 | "dev": true, 709 | "requires": { 710 | "flatted": "^2.0.0", 711 | "rimraf": "2.6.3", 712 | "write": "1.0.3" 713 | } 714 | }, 715 | "flatted": { 716 | "version": "2.0.1", 717 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 718 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 719 | "dev": true 720 | }, 721 | "follow-redirects": { 722 | "version": "1.5.10", 723 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", 724 | "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", 725 | "requires": { 726 | "debug": "=3.1.0" 727 | }, 728 | "dependencies": { 729 | "debug": { 730 | "version": "3.1.0", 731 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 732 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 733 | "requires": { 734 | "ms": "2.0.0" 735 | } 736 | }, 737 | "ms": { 738 | "version": "2.0.0", 739 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 740 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 741 | } 742 | } 743 | }, 744 | "from": { 745 | "version": "0.1.7", 746 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 747 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" 748 | }, 749 | "fs.realpath": { 750 | "version": "1.0.0", 751 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 752 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 753 | "dev": true 754 | }, 755 | "function-bind": { 756 | "version": "1.1.1", 757 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 758 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 759 | "dev": true 760 | }, 761 | "functional-red-black-tree": { 762 | "version": "1.0.1", 763 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 764 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 765 | "dev": true 766 | }, 767 | "get-stdin": { 768 | "version": "6.0.0", 769 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 770 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 771 | "dev": true 772 | }, 773 | "glob": { 774 | "version": "7.1.6", 775 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 776 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 777 | "dev": true, 778 | "requires": { 779 | "fs.realpath": "^1.0.0", 780 | "inflight": "^1.0.4", 781 | "inherits": "2", 782 | "minimatch": "^3.0.4", 783 | "once": "^1.3.0", 784 | "path-is-absolute": "^1.0.0" 785 | } 786 | }, 787 | "glob-parent": { 788 | "version": "5.1.0", 789 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", 790 | "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", 791 | "dev": true, 792 | "requires": { 793 | "is-glob": "^4.0.1" 794 | } 795 | }, 796 | "globals": { 797 | "version": "11.12.0", 798 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 799 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 800 | "dev": true 801 | }, 802 | "graceful-fs": { 803 | "version": "4.2.3", 804 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 805 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", 806 | "dev": true 807 | }, 808 | "has": { 809 | "version": "1.0.3", 810 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 811 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 812 | "dev": true, 813 | "requires": { 814 | "function-bind": "^1.1.1" 815 | } 816 | }, 817 | "has-flag": { 818 | "version": "3.0.0", 819 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 820 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 821 | "dev": true 822 | }, 823 | "has-symbols": { 824 | "version": "1.0.1", 825 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 826 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", 827 | "dev": true 828 | }, 829 | "hosted-git-info": { 830 | "version": "2.8.8", 831 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 832 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 833 | "dev": true 834 | }, 835 | "iconv-lite": { 836 | "version": "0.4.24", 837 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 838 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 839 | "dev": true, 840 | "requires": { 841 | "safer-buffer": ">= 2.1.2 < 3" 842 | } 843 | }, 844 | "ignore": { 845 | "version": "4.0.6", 846 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 847 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 848 | "dev": true 849 | }, 850 | "import-fresh": { 851 | "version": "3.2.1", 852 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 853 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 854 | "dev": true, 855 | "requires": { 856 | "parent-module": "^1.0.0", 857 | "resolve-from": "^4.0.0" 858 | } 859 | }, 860 | "imurmurhash": { 861 | "version": "0.1.4", 862 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 863 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 864 | "dev": true 865 | }, 866 | "inflight": { 867 | "version": "1.0.6", 868 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 869 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 870 | "dev": true, 871 | "requires": { 872 | "once": "^1.3.0", 873 | "wrappy": "1" 874 | } 875 | }, 876 | "inherits": { 877 | "version": "2.0.4", 878 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 879 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 880 | "dev": true 881 | }, 882 | "inquirer": { 883 | "version": "6.5.2", 884 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", 885 | "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", 886 | "dev": true, 887 | "requires": { 888 | "ansi-escapes": "^3.2.0", 889 | "chalk": "^2.4.2", 890 | "cli-cursor": "^2.1.0", 891 | "cli-width": "^2.0.0", 892 | "external-editor": "^3.0.3", 893 | "figures": "^2.0.0", 894 | "lodash": "^4.17.12", 895 | "mute-stream": "0.0.7", 896 | "run-async": "^2.2.0", 897 | "rxjs": "^6.4.0", 898 | "string-width": "^2.1.0", 899 | "strip-ansi": "^5.1.0", 900 | "through": "^2.3.6" 901 | } 902 | }, 903 | "is-arrayish": { 904 | "version": "0.2.1", 905 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 906 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 907 | "dev": true 908 | }, 909 | "is-callable": { 910 | "version": "1.1.5", 911 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", 912 | "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", 913 | "dev": true 914 | }, 915 | "is-date-object": { 916 | "version": "1.0.2", 917 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 918 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", 919 | "dev": true 920 | }, 921 | "is-extglob": { 922 | "version": "2.1.1", 923 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 924 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 925 | "dev": true 926 | }, 927 | "is-fullwidth-code-point": { 928 | "version": "2.0.0", 929 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 930 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 931 | "dev": true 932 | }, 933 | "is-glob": { 934 | "version": "4.0.1", 935 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 936 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 937 | "dev": true, 938 | "requires": { 939 | "is-extglob": "^2.1.1" 940 | } 941 | }, 942 | "is-promise": { 943 | "version": "2.1.0", 944 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 945 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 946 | "dev": true 947 | }, 948 | "is-regex": { 949 | "version": "1.0.5", 950 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", 951 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", 952 | "dev": true, 953 | "requires": { 954 | "has": "^1.0.3" 955 | } 956 | }, 957 | "is-string": { 958 | "version": "1.0.5", 959 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", 960 | "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", 961 | "dev": true 962 | }, 963 | "is-symbol": { 964 | "version": "1.0.3", 965 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 966 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 967 | "dev": true, 968 | "requires": { 969 | "has-symbols": "^1.0.1" 970 | } 971 | }, 972 | "isarray": { 973 | "version": "1.0.0", 974 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 975 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 976 | "dev": true 977 | }, 978 | "isexe": { 979 | "version": "2.0.0", 980 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 981 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 982 | "dev": true 983 | }, 984 | "js-tokens": { 985 | "version": "4.0.0", 986 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 987 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 988 | "dev": true 989 | }, 990 | "js-yaml": { 991 | "version": "3.13.1", 992 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 993 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 994 | "dev": true, 995 | "requires": { 996 | "argparse": "^1.0.7", 997 | "esprima": "^4.0.0" 998 | } 999 | }, 1000 | "json-schema-traverse": { 1001 | "version": "0.4.1", 1002 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1003 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1004 | "dev": true 1005 | }, 1006 | "json-stable-stringify-without-jsonify": { 1007 | "version": "1.0.1", 1008 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1009 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1010 | "dev": true 1011 | }, 1012 | "levn": { 1013 | "version": "0.3.0", 1014 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1015 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1016 | "dev": true, 1017 | "requires": { 1018 | "prelude-ls": "~1.1.2", 1019 | "type-check": "~0.3.2" 1020 | } 1021 | }, 1022 | "load-json-file": { 1023 | "version": "2.0.0", 1024 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1025 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1026 | "dev": true, 1027 | "requires": { 1028 | "graceful-fs": "^4.1.2", 1029 | "parse-json": "^2.2.0", 1030 | "pify": "^2.0.0", 1031 | "strip-bom": "^3.0.0" 1032 | } 1033 | }, 1034 | "locate-path": { 1035 | "version": "2.0.0", 1036 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1037 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1038 | "dev": true, 1039 | "requires": { 1040 | "p-locate": "^2.0.0", 1041 | "path-exists": "^3.0.0" 1042 | } 1043 | }, 1044 | "lodash": { 1045 | "version": "4.17.15", 1046 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1047 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" 1048 | }, 1049 | "lodash.assign": { 1050 | "version": "4.2.0", 1051 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", 1052 | "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" 1053 | }, 1054 | "map-stream": { 1055 | "version": "0.0.7", 1056 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", 1057 | "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" 1058 | }, 1059 | "mimic-fn": { 1060 | "version": "1.2.0", 1061 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1062 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 1063 | "dev": true 1064 | }, 1065 | "mingo": { 1066 | "version": "1.3.3", 1067 | "resolved": "https://registry.npmjs.org/mingo/-/mingo-1.3.3.tgz", 1068 | "integrity": "sha1-aSLE0Ufvx3GgFCWixMj3eER4xUY=" 1069 | }, 1070 | "minimatch": { 1071 | "version": "3.0.4", 1072 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1073 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1074 | "dev": true, 1075 | "requires": { 1076 | "brace-expansion": "^1.1.7" 1077 | } 1078 | }, 1079 | "minimist": { 1080 | "version": "0.0.8", 1081 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1082 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1083 | "dev": true 1084 | }, 1085 | "mkdirp": { 1086 | "version": "0.5.1", 1087 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1088 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1089 | "dev": true, 1090 | "requires": { 1091 | "minimist": "0.0.8" 1092 | } 1093 | }, 1094 | "ms": { 1095 | "version": "2.1.2", 1096 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1097 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1098 | "dev": true 1099 | }, 1100 | "mute-stream": { 1101 | "version": "0.0.7", 1102 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1103 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 1104 | "dev": true 1105 | }, 1106 | "natural-compare": { 1107 | "version": "1.4.0", 1108 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1109 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1110 | "dev": true 1111 | }, 1112 | "nice-try": { 1113 | "version": "1.0.5", 1114 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1115 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1116 | "dev": true 1117 | }, 1118 | "normalize-package-data": { 1119 | "version": "2.5.0", 1120 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1121 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1122 | "dev": true, 1123 | "requires": { 1124 | "hosted-git-info": "^2.1.4", 1125 | "resolve": "^1.10.0", 1126 | "semver": "2 || 3 || 4 || 5", 1127 | "validate-npm-package-license": "^3.0.1" 1128 | }, 1129 | "dependencies": { 1130 | "semver": { 1131 | "version": "5.7.1", 1132 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1133 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1134 | "dev": true 1135 | } 1136 | } 1137 | }, 1138 | "object-inspect": { 1139 | "version": "1.7.0", 1140 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", 1141 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", 1142 | "dev": true 1143 | }, 1144 | "object-keys": { 1145 | "version": "1.1.1", 1146 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1147 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1148 | "dev": true 1149 | }, 1150 | "object.assign": { 1151 | "version": "4.1.0", 1152 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1153 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1154 | "dev": true, 1155 | "requires": { 1156 | "define-properties": "^1.1.2", 1157 | "function-bind": "^1.1.1", 1158 | "has-symbols": "^1.0.0", 1159 | "object-keys": "^1.0.11" 1160 | } 1161 | }, 1162 | "object.entries": { 1163 | "version": "1.1.1", 1164 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", 1165 | "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", 1166 | "dev": true, 1167 | "requires": { 1168 | "define-properties": "^1.1.3", 1169 | "es-abstract": "^1.17.0-next.1", 1170 | "function-bind": "^1.1.1", 1171 | "has": "^1.0.3" 1172 | } 1173 | }, 1174 | "object.values": { 1175 | "version": "1.1.1", 1176 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", 1177 | "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", 1178 | "dev": true, 1179 | "requires": { 1180 | "define-properties": "^1.1.3", 1181 | "es-abstract": "^1.17.0-next.1", 1182 | "function-bind": "^1.1.1", 1183 | "has": "^1.0.3" 1184 | } 1185 | }, 1186 | "once": { 1187 | "version": "1.4.0", 1188 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1189 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1190 | "dev": true, 1191 | "requires": { 1192 | "wrappy": "1" 1193 | } 1194 | }, 1195 | "onetime": { 1196 | "version": "2.0.1", 1197 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1198 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1199 | "dev": true, 1200 | "requires": { 1201 | "mimic-fn": "^1.0.0" 1202 | } 1203 | }, 1204 | "optionator": { 1205 | "version": "0.8.3", 1206 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1207 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1208 | "dev": true, 1209 | "requires": { 1210 | "deep-is": "~0.1.3", 1211 | "fast-levenshtein": "~2.0.6", 1212 | "levn": "~0.3.0", 1213 | "prelude-ls": "~1.1.2", 1214 | "type-check": "~0.3.2", 1215 | "word-wrap": "~1.2.3" 1216 | } 1217 | }, 1218 | "os-tmpdir": { 1219 | "version": "1.0.2", 1220 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1221 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1222 | "dev": true 1223 | }, 1224 | "p-limit": { 1225 | "version": "1.3.0", 1226 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1227 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1228 | "dev": true, 1229 | "requires": { 1230 | "p-try": "^1.0.0" 1231 | } 1232 | }, 1233 | "p-locate": { 1234 | "version": "2.0.0", 1235 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1236 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1237 | "dev": true, 1238 | "requires": { 1239 | "p-limit": "^1.1.0" 1240 | } 1241 | }, 1242 | "p-try": { 1243 | "version": "1.0.0", 1244 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1245 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1246 | "dev": true 1247 | }, 1248 | "parent-module": { 1249 | "version": "1.0.1", 1250 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1251 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1252 | "dev": true, 1253 | "requires": { 1254 | "callsites": "^3.0.0" 1255 | } 1256 | }, 1257 | "parse-json": { 1258 | "version": "2.2.0", 1259 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1260 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1261 | "dev": true, 1262 | "requires": { 1263 | "error-ex": "^1.2.0" 1264 | } 1265 | }, 1266 | "path-exists": { 1267 | "version": "3.0.0", 1268 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1269 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1270 | "dev": true 1271 | }, 1272 | "path-is-absolute": { 1273 | "version": "1.0.1", 1274 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1275 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1276 | "dev": true 1277 | }, 1278 | "path-key": { 1279 | "version": "2.0.1", 1280 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1281 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1282 | "dev": true 1283 | }, 1284 | "path-parse": { 1285 | "version": "1.0.6", 1286 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1287 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1288 | "dev": true 1289 | }, 1290 | "path-type": { 1291 | "version": "2.0.0", 1292 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1293 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1294 | "dev": true, 1295 | "requires": { 1296 | "pify": "^2.0.0" 1297 | } 1298 | }, 1299 | "pause-stream": { 1300 | "version": "0.0.11", 1301 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 1302 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 1303 | "requires": { 1304 | "through": "~2.3" 1305 | } 1306 | }, 1307 | "pify": { 1308 | "version": "2.3.0", 1309 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1310 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1311 | "dev": true 1312 | }, 1313 | "pkg-dir": { 1314 | "version": "2.0.0", 1315 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 1316 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 1317 | "dev": true, 1318 | "requires": { 1319 | "find-up": "^2.1.0" 1320 | } 1321 | }, 1322 | "prelude-ls": { 1323 | "version": "1.1.2", 1324 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1325 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1326 | "dev": true 1327 | }, 1328 | "prettier": { 1329 | "version": "1.19.1", 1330 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", 1331 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", 1332 | "dev": true 1333 | }, 1334 | "prettier-linter-helpers": { 1335 | "version": "1.0.0", 1336 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 1337 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 1338 | "dev": true, 1339 | "requires": { 1340 | "fast-diff": "^1.1.2" 1341 | } 1342 | }, 1343 | "progress": { 1344 | "version": "2.0.3", 1345 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1346 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1347 | "dev": true 1348 | }, 1349 | "punycode": { 1350 | "version": "2.1.1", 1351 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1352 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1353 | "dev": true 1354 | }, 1355 | "read-pkg": { 1356 | "version": "2.0.0", 1357 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 1358 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 1359 | "dev": true, 1360 | "requires": { 1361 | "load-json-file": "^2.0.0", 1362 | "normalize-package-data": "^2.3.2", 1363 | "path-type": "^2.0.0" 1364 | } 1365 | }, 1366 | "read-pkg-up": { 1367 | "version": "2.0.0", 1368 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 1369 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 1370 | "dev": true, 1371 | "requires": { 1372 | "find-up": "^2.0.0", 1373 | "read-pkg": "^2.0.0" 1374 | } 1375 | }, 1376 | "regexpp": { 1377 | "version": "3.0.0", 1378 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", 1379 | "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", 1380 | "dev": true 1381 | }, 1382 | "resolve": { 1383 | "version": "1.15.1", 1384 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", 1385 | "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", 1386 | "dev": true, 1387 | "requires": { 1388 | "path-parse": "^1.0.6" 1389 | } 1390 | }, 1391 | "resolve-from": { 1392 | "version": "4.0.0", 1393 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1394 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1395 | "dev": true 1396 | }, 1397 | "restore-cursor": { 1398 | "version": "2.0.0", 1399 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1400 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1401 | "dev": true, 1402 | "requires": { 1403 | "onetime": "^2.0.0", 1404 | "signal-exit": "^3.0.2" 1405 | } 1406 | }, 1407 | "rimraf": { 1408 | "version": "2.6.3", 1409 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1410 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1411 | "dev": true, 1412 | "requires": { 1413 | "glob": "^7.1.3" 1414 | } 1415 | }, 1416 | "run-async": { 1417 | "version": "2.4.0", 1418 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", 1419 | "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", 1420 | "dev": true, 1421 | "requires": { 1422 | "is-promise": "^2.1.0" 1423 | } 1424 | }, 1425 | "rxjs": { 1426 | "version": "6.5.4", 1427 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", 1428 | "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", 1429 | "dev": true, 1430 | "requires": { 1431 | "tslib": "^1.9.0" 1432 | } 1433 | }, 1434 | "safer-buffer": { 1435 | "version": "2.1.2", 1436 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1437 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1438 | "dev": true 1439 | }, 1440 | "save": { 1441 | "version": "2.4.0", 1442 | "resolved": "https://registry.npmjs.org/save/-/save-2.4.0.tgz", 1443 | "integrity": "sha512-wd5L2uVnsKYkIUaK6i8Ie66IOHaI328gMF0MPuTJtYOjXgUolC33LSIk7Qr8WVA55QHaGwfiVS8a7EFIeGOR3w==", 1444 | "requires": { 1445 | "async": "^2.6.2", 1446 | "event-stream": "^4.0.1", 1447 | "lodash.assign": "^4.2.0", 1448 | "mingo": "1" 1449 | } 1450 | }, 1451 | "semver": { 1452 | "version": "6.3.0", 1453 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1454 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1455 | "dev": true 1456 | }, 1457 | "shebang-command": { 1458 | "version": "1.2.0", 1459 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1460 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1461 | "dev": true, 1462 | "requires": { 1463 | "shebang-regex": "^1.0.0" 1464 | } 1465 | }, 1466 | "shebang-regex": { 1467 | "version": "1.0.0", 1468 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1469 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1470 | "dev": true 1471 | }, 1472 | "signal-exit": { 1473 | "version": "3.0.2", 1474 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1475 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1476 | "dev": true 1477 | }, 1478 | "slice-ansi": { 1479 | "version": "2.1.0", 1480 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1481 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1482 | "dev": true, 1483 | "requires": { 1484 | "ansi-styles": "^3.2.0", 1485 | "astral-regex": "^1.0.0", 1486 | "is-fullwidth-code-point": "^2.0.0" 1487 | } 1488 | }, 1489 | "spdx-correct": { 1490 | "version": "3.1.0", 1491 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 1492 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 1493 | "dev": true, 1494 | "requires": { 1495 | "spdx-expression-parse": "^3.0.0", 1496 | "spdx-license-ids": "^3.0.0" 1497 | } 1498 | }, 1499 | "spdx-exceptions": { 1500 | "version": "2.2.0", 1501 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 1502 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 1503 | "dev": true 1504 | }, 1505 | "spdx-expression-parse": { 1506 | "version": "3.0.0", 1507 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1508 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1509 | "dev": true, 1510 | "requires": { 1511 | "spdx-exceptions": "^2.1.0", 1512 | "spdx-license-ids": "^3.0.0" 1513 | } 1514 | }, 1515 | "spdx-license-ids": { 1516 | "version": "3.0.5", 1517 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 1518 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 1519 | "dev": true 1520 | }, 1521 | "split": { 1522 | "version": "1.0.1", 1523 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 1524 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 1525 | "requires": { 1526 | "through": "2" 1527 | } 1528 | }, 1529 | "sprintf-js": { 1530 | "version": "1.0.3", 1531 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1532 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1533 | "dev": true 1534 | }, 1535 | "stream-combiner": { 1536 | "version": "0.2.2", 1537 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", 1538 | "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", 1539 | "requires": { 1540 | "duplexer": "~0.1.1", 1541 | "through": "~2.3.4" 1542 | } 1543 | }, 1544 | "string-width": { 1545 | "version": "2.1.1", 1546 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1547 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1548 | "dev": true, 1549 | "requires": { 1550 | "is-fullwidth-code-point": "^2.0.0", 1551 | "strip-ansi": "^4.0.0" 1552 | }, 1553 | "dependencies": { 1554 | "strip-ansi": { 1555 | "version": "4.0.0", 1556 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1557 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1558 | "dev": true, 1559 | "requires": { 1560 | "ansi-regex": "^3.0.0" 1561 | } 1562 | } 1563 | } 1564 | }, 1565 | "string.prototype.trimleft": { 1566 | "version": "2.1.1", 1567 | "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", 1568 | "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", 1569 | "dev": true, 1570 | "requires": { 1571 | "define-properties": "^1.1.3", 1572 | "function-bind": "^1.1.1" 1573 | } 1574 | }, 1575 | "string.prototype.trimright": { 1576 | "version": "2.1.1", 1577 | "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", 1578 | "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", 1579 | "dev": true, 1580 | "requires": { 1581 | "define-properties": "^1.1.3", 1582 | "function-bind": "^1.1.1" 1583 | } 1584 | }, 1585 | "strip-ansi": { 1586 | "version": "5.2.0", 1587 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1588 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1589 | "dev": true, 1590 | "requires": { 1591 | "ansi-regex": "^4.1.0" 1592 | }, 1593 | "dependencies": { 1594 | "ansi-regex": { 1595 | "version": "4.1.0", 1596 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1597 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1598 | "dev": true 1599 | } 1600 | } 1601 | }, 1602 | "strip-bom": { 1603 | "version": "3.0.0", 1604 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1605 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1606 | "dev": true 1607 | }, 1608 | "strip-json-comments": { 1609 | "version": "3.0.1", 1610 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", 1611 | "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", 1612 | "dev": true 1613 | }, 1614 | "supports-color": { 1615 | "version": "5.5.0", 1616 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1617 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1618 | "dev": true, 1619 | "requires": { 1620 | "has-flag": "^3.0.0" 1621 | } 1622 | }, 1623 | "table": { 1624 | "version": "5.4.6", 1625 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1626 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1627 | "dev": true, 1628 | "requires": { 1629 | "ajv": "^6.10.2", 1630 | "lodash": "^4.17.14", 1631 | "slice-ansi": "^2.1.0", 1632 | "string-width": "^3.0.0" 1633 | }, 1634 | "dependencies": { 1635 | "string-width": { 1636 | "version": "3.1.0", 1637 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1638 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1639 | "dev": true, 1640 | "requires": { 1641 | "emoji-regex": "^7.0.1", 1642 | "is-fullwidth-code-point": "^2.0.0", 1643 | "strip-ansi": "^5.1.0" 1644 | } 1645 | } 1646 | } 1647 | }, 1648 | "text-table": { 1649 | "version": "0.2.0", 1650 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1651 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1652 | "dev": true 1653 | }, 1654 | "through": { 1655 | "version": "2.3.8", 1656 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1657 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1658 | }, 1659 | "tmp": { 1660 | "version": "0.0.33", 1661 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1662 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1663 | "dev": true, 1664 | "requires": { 1665 | "os-tmpdir": "~1.0.2" 1666 | } 1667 | }, 1668 | "tslib": { 1669 | "version": "1.11.1", 1670 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", 1671 | "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", 1672 | "dev": true 1673 | }, 1674 | "tsutils": { 1675 | "version": "3.17.1", 1676 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 1677 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 1678 | "dev": true, 1679 | "requires": { 1680 | "tslib": "^1.8.1" 1681 | } 1682 | }, 1683 | "type-check": { 1684 | "version": "0.3.2", 1685 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1686 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1687 | "dev": true, 1688 | "requires": { 1689 | "prelude-ls": "~1.1.2" 1690 | } 1691 | }, 1692 | "typescript": { 1693 | "version": "3.8.3", 1694 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", 1695 | "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", 1696 | "dev": true 1697 | }, 1698 | "underscore": { 1699 | "version": "1.9.1", 1700 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", 1701 | "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" 1702 | }, 1703 | "uri-js": { 1704 | "version": "4.2.2", 1705 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1706 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1707 | "dev": true, 1708 | "requires": { 1709 | "punycode": "^2.1.0" 1710 | } 1711 | }, 1712 | "v8-compile-cache": { 1713 | "version": "2.1.0", 1714 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 1715 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 1716 | "dev": true 1717 | }, 1718 | "validate-npm-package-license": { 1719 | "version": "3.0.4", 1720 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 1721 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 1722 | "dev": true, 1723 | "requires": { 1724 | "spdx-correct": "^3.0.0", 1725 | "spdx-expression-parse": "^3.0.0" 1726 | } 1727 | }, 1728 | "which": { 1729 | "version": "1.3.1", 1730 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1731 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1732 | "dev": true, 1733 | "requires": { 1734 | "isexe": "^2.0.0" 1735 | } 1736 | }, 1737 | "word-wrap": { 1738 | "version": "1.2.3", 1739 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1740 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1741 | "dev": true 1742 | }, 1743 | "wrappy": { 1744 | "version": "1.0.2", 1745 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1746 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1747 | "dev": true 1748 | }, 1749 | "write": { 1750 | "version": "1.0.3", 1751 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1752 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1753 | "dev": true, 1754 | "requires": { 1755 | "mkdirp": "^0.5.1" 1756 | } 1757 | } 1758 | } 1759 | } 1760 | --------------------------------------------------------------------------------