diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa2e7d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.vscode +.DS_Store +/node_modules/ +/app-js/ +/dist +/release-builds/ +/.idea/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..98c3d6e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing to Desktop Interop API Specification +Thanks for your interest in the project! Here is some basic information about how to contribute. + +# Contributor License Agreement (CLA) +All contributions to [Fintech Open Source Foundation](https://www.finos.org/) projects must be made under a [Contributor License Agreement](https://finosfoundation.atlassian.net/wiki/spaces/FINOS/pages/75530375/Legal+Requirements) that must also be met. + +Pull requests (PRs) submitted to the project cannot be accepted until you have a CLA in place with the Foundation. + +# Contributing Issues + +## Raising an Issue +* Please raise issues to the project mailing list _(TBA)_. Some people from project teams currently can't access build-in github issue tracker from corporate network. +* Please also tag the new issue with either "Bug" or "Enhancement". + +# Contributing Pull Requests (Code & Docs) +To make review of PRs easier, please: + + * For major enhancements before working on any PR, please review the proposal with the project group via mailing list _(TBA)_ to align it with roadmap. + * Please make sure your PRs will merge cleanly - PRs that don't are unlikely to be accepted. + * For code contributions, follow the general structure of the existing code. + * For documentation contributions, follow the general structure, language, and tone of the existing docs. + * Keep PRs small and cohesive - if you have multiple contributions, please submit them as independent PRs. + * Minimize non-functional changes (e.g. whitespace shenanigans). + * Ensure all new files include a header comment block containing the [Apache License v2.0 and your copyright information](http://www.apache.org/licenses/LICENSE-2.0#apply). + * If necessary (e.g. due to 3rd party dependency licensing requirements), update the NOTICE file with any required attribution or other notices + * If your contribution includes source code for any Category B-licensed dependencies, please get a pre-approval from project leads via mailing list and then add an appropriate notice to this CONTRIBUTING file + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9ebefce --- /dev/null +++ b/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright © 2014-2019 Tick42 OOD + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 052cb07..2adc852 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,101 @@ +![](./resources/fdc3.png) + # App Directory Demo Launcher aka Toolbar -This is a demo/POC Toolbar, it connects to one or more FINOS FDC3 compatible application directories that implement the FDC3 App Directory REST API https://fdc3.finos.org/appd-spec. The Toolbar will show all the defined applications. +This Toolbar, contributed by Tick42, connects to one or more FINOS FDC3 compatible application directories that implement the FDC3 App Directory REST API https://fdc3.finos.org/appd-spec. The Toolbar will show all the defined applications, and will attempt to launch applications that are defined by a supported Manifest type. -The Toolbar can also show a set of favourite application as Icons in the main Toolbar. +The Toolbar can also show a set of favourite applications as Icons in the main Toolbar. The Toolbar is primarily aimed at developers working with FINOS FDC3, it provides easy access to the application definitions and to the log files to allow developers to explore the services. -The Toolbar is delivered as a standalone Electron application. +## Toolbar components + +The Toolbar is separated into two main components + +### app +The app component is a standalone Electron application. It also includes wrappers for the App Directory services. +It loads the Toolbar window with a URI that is stored in ```./toolbar-ui-angular/dist```. + +### toolbar-ui-angular +The toolbar-ui-angular component is the Toolbar window displayed by the Electron application. It is written with Angular 7. +By default the Electron application starts the Toolbar window in file mode. + +The Toolbar is currently aware of the following manifest types: +- 'org.finos.fdc3.demo' - covers browser/exe and therefore is platform/host independent +- 'org.finos.fdc3.demo.host' - covers platform/host specific applications + + +## Getting Started + +### Prerequisites + +You will need node.js & npm as well as a globally installed electron (npm i -g electron). + +The project has dependencies that require Node 8.9 or higher, together with NPM 5.5.1 or higher. + +### Steps to run project + +- Clone the project + +- run build-ui.bat +- run build-app.bat +- run start.bat + +### Steps to run project manually + +#### Build Toolbar Window (UI) + +- ```cd``` to /toolbar-ui-angular +- ```npm i``` +- ```npm run build``` + +#### Install dependencies + +- ```cd``` to the project's root dir +- ```npm i``` + +#### Run dev version + +- ```npm run build``` +- ```electron app-js/main.js``` + +#### Run prod version + +- ```npm run package:all``` +- Inside the release-builds folder locate the built version for your OS + +## Description + +### Application providers + +The list Application providers aka (Application Directories) is defined in the Toolbar, using the Settings UI. + +Application provider details are held in local storage. + +#### AppD PoC provider + +In order to use the FDC3 Demo Toolbar, you need to have AppD services to connect to. If you do not have access to services, you can run your own instances using the [appd-poc](https://github.com/FDC3/appd-poc), a Java server. Steps to run: + +- Clone the project + +- Build the appd-poc + +- Launch the appd-poc + +- Register a user with the appd-poc + +- Configure ```app/config/providers.config.ts``` with your e-mail and password for the appd-poc + +- Inside of ```app/providers/appd-poc-apps``` you can find example application definitions that you can configure and provide to the appd-poc inside of ```json/apps``` + +- On Startup the Toolbar connects to all the configured application providers. The Toolbar can start applications with manifestType `org.finos.fdc3.demo` which is used to start non-FDC3 applications such as Desktop Executables and Browsers. + +##### [org.finos.fdc3.demo](./app/apps/schemas/org.finos.fdc3.demo-manifest-schema.json) + +Support for starting application of manifestType `org.finos.fdc3.demo.host` is scheduled for version 1.1 of the Toolbar. This can be viewed in the [FINOS Plexus Interop API examples](https://github.com/finos-plexus/finos-plexus.github.io/tree/master/demos/finos-fdc3/fdc3-toolbar) This manifestType is used for applications that are started via the FDC3 API. + +##### [org.finos.fdc3.demo.host](./app/apps/schemas/org.finos.fdc3.demo.host-manifest-schema.json) + +##### Other manifest types + +The Toolbar can easily be extended to support more manifest types, by extending the code in ```app/apps/app.ts```. diff --git a/app/apps/app.ts b/app/apps/app.ts new file mode 100644 index 0000000..f839d96 --- /dev/null +++ b/app/apps/app.ts @@ -0,0 +1,135 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { shell } from 'electron'; +import { execFile } from 'child_process'; +import logStream from '../shared'; +import { AppAPI, Image, Icon, Intent } from './types'; + +export default class App implements AppAPI { + public appId: string; + public name: string; + public version: string; + public title: string; + public tooltip: string; + public description: string; + public images: Image[]; + public contactEmail: string; + public supportEmail: string; + public publisher: string; + public icons: Icon[]; + public customConfig: any[]; + public intents: Intent[]; + public manifestType: string; + public manifest: string; + + constructor(appConfig: AppAPI) { + if (!appConfig.appId || !appConfig.name || !appConfig.manifest || !appConfig.manifestType) { + const errorMsg = 'App is missing appId/name/manifest/manifestType field.'; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + + this.appId = appConfig.appId; + this.name = appConfig.name; + this.version = appConfig.version || ''; + this.title = appConfig.title || ''; + this.tooltip = appConfig.tooltip || ''; + this.description = appConfig.description || ''; + this.images = appConfig.images || []; + this.contactEmail = appConfig.contactEmail || ''; + this.supportEmail = appConfig.supportEmail || ''; + this.publisher = appConfig.publisher || ''; + this.icons = appConfig.icons || []; + this.customConfig = appConfig.customConfig || []; + this.intents = appConfig.intents || []; + this.manifestType = appConfig.manifestType; + this.manifest = appConfig.manifest; + } + + public async start() { + logStream.next([`Starting app "${this.title || this.name}".`, 'info', 'Toolbar']); + + let manifestJSON: any; // The manifestType determines the shape of the parsed manifest. + let errorMsg: string; + + try { + manifestJSON = JSON.parse(this.manifest); + } catch (error) { + errorMsg = `Failed to parse "${this.title || this.name}"'s manifest.`; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + + /* The toolbar is currently aware of the following manifest types: + 'org.finos.fdc3.demo' - covers browser/exe and therefore is platform/host independent + 'org.finos.fdc3.demo.host' - covers platform/host specific applications + */ + switch (this.manifestType) { + case 'org.finos.fdc3.demo': + + this.handleOrgFinosFdc3Demo(manifestJSON); + break; + + default: + + errorMsg = `No FDC3 API Implementation provided. Application "${this.title || this.name}" can't be started.`; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + break; + } + } + + private handleOrgFinosFdc3Demo(manifestJSON: any) { + let errorMsg: string; + + switch (manifestJSON.type) { + case 'browser': + const appUrl = manifestJSON.url; + + if (typeof appUrl === 'undefined') { + errorMsg = `Browser application "${this.title || this.name}" is missing url field inside the manifest.`; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + + shell.openExternal(appUrl); + break; + case 'exe': + const exePath = manifestJSON.exePath; + + if (typeof exePath === 'undefined') { + errorMsg = `Exe application "${this.title || this.name}" is missing exePath field inside the manifest.`; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + + execFile(exePath); + break; + default: + errorMsg = `Unknown type "${manifestJSON.type}" application "${this.title || this.name}" with manifest type "org.finos.fdc3.demo".`; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + } +} diff --git a/app/apps/schemas/org.finos.fdc3.demo-manifest-schema.json b/app/apps/schemas/org.finos.fdc3.demo-manifest-schema.json new file mode 100644 index 0000000..241b232 --- /dev/null +++ b/app/apps/schemas/org.finos.fdc3.demo-manifest-schema.json @@ -0,0 +1,33 @@ +{ + "id": "/OrgFinosFdc3Demo", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "OrgFinosFdc3Demo", + "oneOf": [ + { "$ref": "#/definitions/BrowserDetails" }, + { "$ref": "#/definitions/ExeDetails" } + ], + "definitions": { + "BrowserDetails": { + "type": "object", + "properties": { + "type": { "const": "browser" }, + "url": { + "type": "string" + } + }, + "required": ["type", "url"], + "additionalProperties": true + }, + "ExeDetails": { + "type": "object", + "properties": { + "type": { "const": "exe" }, + "exePath": { + "type": "string" + } + }, + "required": ["type", "exePath"], + "additionalProperties": true + } + } +} diff --git a/app/apps/schemas/org.finos.fdc3.demo.host-manifest-schema.json b/app/apps/schemas/org.finos.fdc3.demo.host-manifest-schema.json new file mode 100644 index 0000000..15a7d9a --- /dev/null +++ b/app/apps/schemas/org.finos.fdc3.demo.host-manifest-schema.json @@ -0,0 +1,22 @@ +{ + "id": "/OrgFinosFdc3DemoHost", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "OrgFinosFdc3DemoHost", + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "hostType": { + "type": "string" + }, + "hostName": { + "type": "string" + }, + "hostManifest": { + "$ref": "/GlueDesktopApplicationSchema" + } + }, + "required": ["type", "hostType", "hostName", "hostManifest"], + "additionalProperties": true +} diff --git a/app/apps/types.ts b/app/apps/types.ts new file mode 100644 index 0000000..be21743 --- /dev/null +++ b/app/apps/types.ts @@ -0,0 +1,51 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface AppAPI { + appId: string; + name: string; + version: string; + title: string; + tooltip: string; + description: string; + images: Image[]; + contactEmail: string; + supportEmail: string; + publisher: string; + icons: Icon[]; + customConfig: NameValuePair[]; + intents: Intent[]; + manifestType: string; + manifest: string; +} + +export interface Image { + url: string; +} + +export interface Icon { + icon: string; +} + +export interface Intent { + name: string; +} + +export interface NameValuePair { + key: string; + value: string; +} diff --git a/app/config/index.ts b/app/config/index.ts new file mode 100644 index 0000000..c22bf58 --- /dev/null +++ b/app/config/index.ts @@ -0,0 +1,22 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import windowConfig from './window-options.config'; + +export { + windowConfig, +}; diff --git a/app/config/window-options.config.ts b/app/config/window-options.config.ts new file mode 100644 index 0000000..91c1965 --- /dev/null +++ b/app/config/window-options.config.ts @@ -0,0 +1,35 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as path from 'path'; +import { BrowserWindowConstructorOptions } from 'electron'; + +const windowConfig: BrowserWindowConstructorOptions = { + show: false, + webPreferences: { + preload: path.join(__dirname, '..', 'preload.js'), + nodeIntegration: true + }, + x: 200, + y: 200, + height: 100, + width: 800, + minHeight: 100, + minWidth: 500 +}; + +export default windowConfig; diff --git a/app/main.ts b/app/main.ts new file mode 100644 index 0000000..f1a2a66 --- /dev/null +++ b/app/main.ts @@ -0,0 +1,25 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import logStream from './shared'; +import { Toolbar } from './toolbar'; + +const appProviders: any[] = []; +const fdc3LauncherToolbar = new Toolbar(); +fdc3LauncherToolbar.start(appProviders); +(global as any).fdc3LauncherToolbar = fdc3LauncherToolbar; +(global as any).logStream = logStream; diff --git a/app/preload.ts b/app/preload.ts new file mode 100644 index 0000000..6e401a9 --- /dev/null +++ b/app/preload.ts @@ -0,0 +1,27 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { remote } from 'electron'; + +/** + * By saving these variables to the window object, the Toolbar Window is able to start applications and log events. + * This is demo code and should be changed for production. + * fdc3LauncherToolbar allows to subscribe for providers and to start their applications. + * logStream allows to subscribe for log stream and to push new logs + */ +(window as any).fdc3LauncherToolbar = remote.getGlobal('fdc3LauncherToolbar'); +(window as any).logStream = remote.getGlobal('logStream'); diff --git a/app/providers/providerFactory.ts b/app/providers/providerFactory.ts new file mode 100644 index 0000000..a38ef24 --- /dev/null +++ b/app/providers/providerFactory.ts @@ -0,0 +1,27 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import RestAppProvider from './rest-app-provider'; +import ProviderConfig from './types/providerConfig'; + +class ProviderFactory { + public create(providerConfig: ProviderConfig) { + return new RestAppProvider(providerConfig); + } +} + +export default ProviderFactory; diff --git a/app/providers/rest-app-provider.ts b/app/providers/rest-app-provider.ts new file mode 100644 index 0000000..115272e --- /dev/null +++ b/app/providers/rest-app-provider.ts @@ -0,0 +1,104 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppProvider from './types/app-provider'; +import ProviderConfig from './types/providerConfig'; +import App from '../apps/app'; +import { AppAPI } from '../apps/types'; +import fetch from 'node-fetch'; +import logStream from '../shared'; + +export default class RestAppProvider implements AppProvider { + public name: string; + public apiUrl: string; + public email: string; + public password: string; + public authUrl: string; + + constructor(providerConfig: ProviderConfig) { + if (!providerConfig.name || !providerConfig.apiUrl) { + const errorMsg = 'App provider is missing name/apiUrl field.'; + + logStream.next([errorMsg, 'error', 'Toolbar']); + throw new Error(errorMsg); + } + + this.name = providerConfig.name; + this.apiUrl = providerConfig.apiUrl; + this.email = providerConfig.email || ''; + this.password = providerConfig.password || ''; + this.authUrl = providerConfig.authUrl || ''; + } + + public async getAuthToken() { + const body = { + email: this.email, + password: this.password, + }; + + const postOptions = { + method: 'POST', + headers: { + 'Content-Type': 'application/json; charset=utf-8', + }, + body: JSON.stringify(body), + }; + + const res = await fetch(this.authUrl, postOptions); + const resJSON = await res.json(); + + return resJSON.Authorization; + } + + public async getApps(): Promise { + let headers = {}; + + if (this.authUrl !== '') { + let authToken; + + try { + authToken = await this.getAuthToken(); + } catch (error) { + logStream.next([error.msg || error, 'error', 'Toolbar']); + throw new Error(error.msg || error); + } + + headers = { + Authorization: `Bearer ${authToken}`, + }; + } + + const getOptions = { + method: 'GET', + headers, + }; + + let resJSON; + + try { + const res = await fetch(`${this.apiUrl}/apps/search`, getOptions); + resJSON = await res.json(); + } catch (error) { + logStream.next([error.msg || error, 'error', 'Toolbar']); + throw new Error(error.msg || error); + } + + const apps = resJSON.applications.map((app: AppAPI) => new App(app)); + + return apps; + } +} diff --git a/app/providers/types/app-provider.ts b/app/providers/types/app-provider.ts new file mode 100644 index 0000000..e55fc5f --- /dev/null +++ b/app/providers/types/app-provider.ts @@ -0,0 +1,23 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import App from '../../apps/app'; +import ProviderConfig from './providerConfig'; + +export default interface AppProvider extends ProviderConfig { + getApps: () => Promise; +} diff --git a/app/providers/types/providerConfig.ts b/app/providers/types/providerConfig.ts new file mode 100644 index 0000000..35603bb --- /dev/null +++ b/app/providers/types/providerConfig.ts @@ -0,0 +1,24 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default interface ProviderConfig { + name: string; + apiUrl: string; + email: string; + password: string; + authUrl: string; +} diff --git a/app/shared.ts b/app/shared.ts new file mode 100644 index 0000000..2a793b3 --- /dev/null +++ b/app/shared.ts @@ -0,0 +1,22 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ReplaySubject } from 'rxjs'; + +const logStream = new ReplaySubject(); + +export default logStream; diff --git a/app/toolbar.ts b/app/toolbar.ts new file mode 100644 index 0000000..c1d2317 --- /dev/null +++ b/app/toolbar.ts @@ -0,0 +1,153 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppProvider from './providers/types/app-provider'; +import ProviderConfig from './providers/types/providerConfig'; +import { app, BrowserWindow, BrowserWindowConstructorOptions, ipcMain } from 'electron'; +import { windowConfig } from './config'; +import * as path from 'path'; +import { BehaviorSubject } from 'rxjs'; +import logStream from './shared'; +import RestAppProvider from './providers/rest-app-provider'; +import { writeFileSync } from 'fs'; + +export class Toolbar { + public toolbarWindow: BrowserWindow; + private toolbarWindowOptions: BrowserWindowConstructorOptions = windowConfig; + private toolbarWindowReady: Promise; + private providers = new BehaviorSubject([]); + + public start(providers: AppProvider[]) { + this.startToolbarWindow(); + this.addProviders(providers); + ipcMain.on('get-preload-path', (event: any) => { + event.returnValue = path.join(__dirname, '../toolbar-ui-angular/preload.js'); + }); + } + + public addProvider(provider: ProviderConfig): boolean { + if (this.validateProvider(provider)) { + const providers = this.providers.value; + providers.push(new RestAppProvider(provider)); + + return this.updateAllProviders(providers); + } else { + return false; + } + } + + public updateProvider(oldProvider: AppProvider, newProviderData: ProviderConfig): boolean { + let updatedProviderIndex; + const providers = this.providers.value; + providers.forEach((provider: AppProvider, index: number) => { + if (provider.name === oldProvider.name && provider.apiUrl === oldProvider.apiUrl) { + updatedProviderIndex = index; + } + }); + + if (this.validateProvider(newProviderData)) { + const newProvider = new RestAppProvider(newProviderData); + providers.splice(updatedProviderIndex, 1, newProvider); + return this.updateAllProviders(providers); + } else { + return false; + } + } + + public deleteProvider(deletedProvider: AppProvider): boolean { + let deletedProviderIndex; + const providers = this.providers.value; + providers.forEach((provider: AppProvider, index: number) => { + if (provider.name === deletedProvider.name && provider.apiUrl === deletedProvider.apiUrl) { + deletedProviderIndex = index; + } + }); + + if (deletedProviderIndex) { + providers.splice(deletedProviderIndex, 1); + } else { + logStream.next([`Unable to delete provider ${deletedProvider.name}`, 'error', 'Toolbar']); + } + return this.updateAllProviders(providers); + } + + private startToolbarWindow() { + this.toolbarWindowReady = new Promise((resolve) => { + app.on('ready', () => { + this.createWindow(); + resolve(); + logStream.next(['Electron ready.', 'info', 'Electron']); + }); + + app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + logStream.next(['Toolbar window closed, stopping Electron app.', 'info', 'Electron']); + app.quit(); + } + }); + + app.on('activate', () => { + if (!this.toolbarWindow) { + this.createWindow(); + } + }); + }); + } + + private createWindow() { + this.toolbarWindow = new BrowserWindow(this.toolbarWindowOptions); + this.toolbarWindow.setTitle('FDC3 Demo Toolbar'); + this.toolbarWindow.setMenuBarVisibility(false); + this.toolbarWindow.loadURL( + `file://${path.join(__dirname, '..')}/toolbar-ui-angular/dist/toolbar-ui/index.html` + ); + this.toolbarWindow.on('ready-to-show', () => { + this.toolbarWindow.show(); + console.log(this.toolbarWindow); + logStream.next(['Toolbar window ready.', 'info', 'Toolbar']); + }); + this.toolbarWindow.webContents.on('did-finish-load', this.sendProviders.bind(this)); + } + + private addProviders(providers: AppProvider[]): void { + this.providers.next(providers); + } + + private sendProviders(): boolean { + this.toolbarWindowReady.then(() => { + this.providers.subscribe((providers) => { + this.toolbarWindow.webContents.send('providersChanged', providers); + }); + }); + + return true; + } + + private updateAllProviders(providers: AppProvider[]): boolean { + try { + writeFileSync(path.join(__dirname, 'config', 'rest-providers.config.json'), JSON.stringify(providers, null, 2)); + this.providers.next(providers); + return true; + } catch (e) { + return false; + } + } + + private validateProvider(provider: ProviderConfig): boolean { + return provider.name && provider.name.length > 0 && provider.apiUrl && provider.apiUrl.length > 0; + } +} diff --git a/build-app.bat b/build-app.bat new file mode 100644 index 0000000..3cd5607 --- /dev/null +++ b/build-app.bat @@ -0,0 +1 @@ +npm i && npm run build \ No newline at end of file diff --git a/build-ui.bat b/build-ui.bat new file mode 100644 index 0000000..17ad579 --- /dev/null +++ b/build-ui.bat @@ -0,0 +1,2 @@ +cd toolbar-ui-angular +npm i && npm run build \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2ce56dd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2194 @@ +{ + "name": "finos-fdc3-appd-toolbar", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@iamadamjowett/angular-click-outside": { + "version": "2.10.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@iamadamjowett/angular-click-outside/-/angular-click-outside-2.10.1.tgz", + "integrity": "sha1-AcrNuYLCyGq5EtwynG8Y7FcE4zg=" + }, + "@types/node": { + "version": "8.10.24", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/node/-/node-8.10.24.tgz", + "integrity": "sha1-MCqPDAC9G/NkRxtmhyWGF8XUEPw=" + }, + "@types/node-fetch": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.2.tgz", + "integrity": "sha512-djYYKmdNRSBtL1x4CiE9UJb9yZhwtI1VC+UxZD0psNznrUj80ywsxKlEGAE+QL1qvLjPbfb24VosjkYM6W4RSQ==", + "requires": { + "@types/node": "*" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "angular": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.8.tgz", + "integrity": "sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "asar": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz", + "integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==", + "dev": true, + "requires": { + "chromium-pickle-js": "^0.2.0", + "commander": "^2.9.0", + "cuint": "^0.2.1", + "glob": "^6.0.4", + "minimatch": "^3.0.3", + "mkdirp": "^0.5.0", + "mksnapshot": "^0.3.4", + "tmp": "0.0.28" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + }, + "bootstrap.native": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/bootstrap.native/-/bootstrap.native-2.0.27.tgz", + "integrity": "sha512-gv2eN4zXHOLN/oPotTxb8CJr9Dk0xlM9YURyHCWjq1Lyt2I669bri/Bp8b0HPOKX7JqRVh+Sk/VwEe0OcQN2fw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decompress-zip": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.2.tgz", + "integrity": "sha512-Ab1QY4LrWMrUuo53lLnmGOby7v8ryqxJ+bKibKSiPisx+25mhut1dScVBXAYx14i/PqSrFZvR2FRRazhLbvL+g==", + "dev": true, + "requires": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.18.tgz", + "integrity": "sha512-PQRHtFvLxHdJzMMIwTddUtkS+Te/fZIs+PHO+zPmTUTBE76V3Od3WRGzMQwiJHxN679licmCKhJpMyxZfDEVWQ==", + "dev": true, + "requires": { + "@types/node": "^8.0.24", + "electron-download": "^3.0.1", + "extract-zip": "^1.0.3" + } + }, + "electron-download": { + "version": "3.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-download/-/electron-download-3.3.0.tgz", + "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "fs-extra": "^0.30.0", + "home-path": "^1.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.0", + "path-exists": "^2.1.0", + "rc": "^1.1.2", + "semver": "^5.3.0", + "sumchecker": "^1.2.0" + } + }, + "electron-osx-sign": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.14.tgz", + "integrity": "sha512-72vtrz9I3dOeFDaNvO5thwIjrimDiXMmYEbN0hEBqnvcSSMOWugjim2wiY9ox3dhuBFUhxp3owmuZCoH3Ij08A==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "dependencies": { + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + } + } + } + }, + "electron-packager": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-12.2.0.tgz", + "integrity": "sha512-T5W/FIK4VXhYIOWxkehmz6zXt2S/sA9JZ3AL+/jeKCicQY6QVQ0K8B7W801L+GPTwbgTPycHjO+iqEf1BhZ+Iw==", + "dev": true, + "requires": { + "asar": "^0.14.0", + "debug": "^3.0.0", + "electron-download": "^4.1.1", + "electron-osx-sign": "^0.4.1", + "extract-zip": "^1.0.3", + "fs-extra": "^5.0.0", + "galactus": "^0.2.1", + "get-package-info": "^1.0.0", + "nodeify": "^1.0.1", + "parse-author": "^2.0.0", + "pify": "^3.0.0", + "plist": "^2.0.0", + "rcedit": "^1.0.0", + "resolve": "^1.1.6", + "sanitize-filename": "^1.6.0", + "semver": "^5.3.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "electron-download": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", + "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + } + } + }, + "env-paths": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/env-paths/-/env-paths-1.0.0.tgz", + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend/-/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "flora-colossus": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", + "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "galactus": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/galactus/-/galactus-0.2.1.tgz", + "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", + "dev": true, + "requires": { + "debug": "^3.1.0", + "flora-colossus": "^1.0.0", + "fs-extra": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "get-package-info": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", + "dev": true, + "requires": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "home-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.7.tgz", + "integrity": "sha512-tM1pVa+u3ZqQwIkXcWfhUlY3HWS3TsnKsfi2OHHvnhkX52s9etyktPyy1rQotkr0euWimChDq+QkQuDe8ngUlQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ini/-/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-promise": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-promise/-/is-promise-1.0.1.tgz", + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha1-BWnWV0ZkkSg3CWY603mpm5DZq0c=", + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha1-ceRkU3p++BwV8tudl+kT/A/2BvA=", + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", + "dev": true + }, + "mksnapshot": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz", + "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==", + "dev": true, + "requires": { + "decompress-zip": "0.3.x", + "fs-extra": "0.26.7", + "request": "2.x" + }, + "dependencies": { + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "nodeify": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nodeify/-/nodeify-1.0.1.tgz", + "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", + "dev": true, + "requires": { + "is-promise": "~1.0.0", + "promise": "~1.3.0" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plist": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/plist/-/plist-2.1.0.tgz", + "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "dev": true, + "requires": { + "base64-js": "1.2.0", + "xmlbuilder": "8.2.2", + "xmldom": "0.1.x" + }, + "dependencies": { + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + "dev": true + }, + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "dev": true + } + } + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + } + }, + "promise": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/promise/-/promise-1.3.0.tgz", + "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", + "dev": true, + "requires": { + "is-promise": "~1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/qs/-/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rc/-/rc-1.2.8.tgz", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "rcedit": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", + "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.87.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/request/-/request-2.87.0.tgz", + "integrity": "sha1-MvACNc0I1IK00NaNuTqCnA7VdW4=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "semver": { + "version": "5.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/semver/-/semver-5.5.0.tgz", + "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "^1.0.1" + } + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "sumchecker": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sumchecker/-/sumchecker-1.3.1.tgz", + "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "es6-promise": "^4.0.5" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "tmp": { + "version": "0.0.28", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tmp/-/tmp-0.0.28.tgz", + "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "touch": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", + "dev": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "tslint": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz", + "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.9.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha1-HL9h0F1rliaSROtqO85L2RTg8Aw=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a70e53e --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "finos-fdc3-appd-toolbar", + "productName": "FINOS FDC3 App Directory evaluation toolbar", + "version": "1.0.0", + "description": "A simple toolbar that can display and launch applications", + "main": "app-js/main.js", + "scripts": { + "build": "npm run tslint && tsc", + "start": "electron app-js/main.js", + "tslint": "node_modules/.bin/tslint ./app/**/*.ts", + "package:win": "electron-packager . finos-fdc3-appd-toolbar --overwrite --platform=win32 --arch=all --icon=resources/icons/fdc3.png.ico --prune=true --out=release-builds --version-string.ProductName=\"FINOS FDC3 AppD Toolbar\"", + "package:all": "electron-packager . finos-fdc3-appd-toolbar --overwrite --platform=all --arch=all --icon=resources/icons/fdc3.png.ico --prune=true --out=release-builds --version-string.ProductName=\"FINOS FDC3 AppD Toolbar\"" + }, + "author": "Tick42", + "license": "Apache-2.0", + "dependencies": { + "@iamadamjowett/angular-click-outside": "^2.10.1", + "@types/node-fetch": "^2.5.2", + "angular": "^1.7.8", + "bootstrap.native": "^2.0.27", + "node-fetch": "^2.6.0", + "rxjs": "^6.5.3", + "typescript": "^2.9.2" + }, + "devDependencies": { + "electron": "^2.0.18", + "electron-packager": "^12.2.0", + "tslint": "^5.20.0" + }, + "optionalDependencies": {} +} diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..d7fe245 --- /dev/null +++ b/start.bat @@ -0,0 +1 @@ +electron app-js/main.js \ No newline at end of file diff --git a/toolbar-ui-angular/.editorconfig b/toolbar-ui-angular/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/toolbar-ui-angular/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/toolbar-ui-angular/.gitignore b/toolbar-ui-angular/.gitignore new file mode 100644 index 0000000..47765ad --- /dev/null +++ b/toolbar-ui-angular/.gitignore @@ -0,0 +1,44 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/toolbar-ui-angular/README.md b/toolbar-ui-angular/README.md new file mode 100644 index 0000000..c6f5110 --- /dev/null +++ b/toolbar-ui-angular/README.md @@ -0,0 +1,50 @@ +# FINOS FDC3 AppD demo toolbar + +## Overview + +This Project, an open source contribution from Glue42, provides a UI that: +* connects to one or more FINOS FDC3 Application Directories. +* shows the applications defined in each server +* allows those applications to be launched. + +The UI is oriented towards developers who are investigating the AppD service, for example it provides easy access to view the JSon definitions of the applications and to easily view the log files. However the UI is functional and a production oriented toolbar could easily be created by removing access to some features. + +The UI shows the integration of the FDC3 AppD Services API and the FDC3 API used to launch applications. + + +### Application providers + +The Toolbar displays the available applications from AppD providers aka Application Directories that follow the [appd-api](https://github.com/FDC3/appd-api). + +The list of app providers can be managed using the Toolbar settings UI. + +### Applications + +The FINOS FDC3 Application Directory API defines applications, certain key attributes of each application are provided in common fields, including information on any Intents supported by the application. However the launch details of each application are defined in the application manifest, the manifest is either proviuded as a string, or a URL to the manifest definition. + +FINOS FDC3 does not define any manifest types, and the types are expected to vary between FDC3 implementations. As an example of how manifest types could be used, the Toolbar projects defines two manifest types +* [org.finos.fdc3.demo](./app/apps/schemas/org.finos.fdc3.demo-manifest-schema.json) +Which is used to define Desktop Exe and Desktop Browser applications. These applications can be started by the Toolbar using the Electron native services. +* [org.finos.fdc3.demo.host](./app/apps/schemas/org.finos.fdc3.demo.host-manifest-schema.json) Which defines an FDC3 application i.e. an application which is started by an [Finos FDC3 API](https://github.com/FDC3/FDC3/blob/master/src/api/interface.ts) open call. The format specified here could be used to describe applications from a range of FDC3 API implementations. + +Support for the demo.host manifest is scheduled for v1.1 of the Toolbar demo. + +### Logs + +Log events can be exported as .csv file and can be opened in a separate window. + +## Build + +clone the project +* ```cd``` to /toolbar-ui-angular +* ```npm i``` +* ```npm run build``` + +OR + +* clone the project +* run build-ui.bat + +This generates a standalone Electron project. + +The built version of the project can be started using the start.bat batch file. diff --git a/toolbar-ui-angular/angular.json b/toolbar-ui-angular/angular.json new file mode 100644 index 0000000..e6037fc --- /dev/null +++ b/toolbar-ui-angular/angular.json @@ -0,0 +1,141 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "toolbar-ui": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/toolbar-ui", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/assets/styles/bootstrap.min.css", + "src/styles.scss" + ], + "scripts": [], + "es5BrowserSupport": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "toolbar-ui:build" + }, + "configurations": { + "production": { + "browserTarget": "toolbar-ui:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "toolbar-ui:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "toolbar-ui-e2e": { + "root": "e2e/", + "projectType": "application", + "prefix": "", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "toolbar-ui:serve" + }, + "configurations": { + "production": { + "devServerTarget": "toolbar-ui:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + }, + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist" + } + } + } + } + }, + "defaultProject": "toolbar-ui" +} diff --git a/toolbar-ui-angular/package-lock.json b/toolbar-ui-angular/package-lock.json new file mode 100644 index 0000000..95bdabe --- /dev/null +++ b/toolbar-ui-angular/package-lock.json @@ -0,0 +1,11461 @@ +{ + "name": "toolbar-ui", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/architect/-/architect-0.13.1.tgz", + "integrity": "sha1-OVl86U9y2Jvdie5WfLk3z/TBO5g=", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.1", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/build-angular": { + "version": "0.13.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/build-angular/-/build-angular-0.13.1.tgz", + "integrity": "sha1-Np/r2kjdQOR6TwB3Bk55JhKo4cE=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.13.1", + "@angular-devkit/build-optimizer": "0.13.1", + "@angular-devkit/build-webpack": "0.13.1", + "@angular-devkit/core": "7.3.1", + "@ngtools/webpack": "7.3.1", + "ajv": "6.7.0", + "autoprefixer": "9.4.6", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.2.1", + "copy-webpack-plugin": "4.6.0", + "file-loader": "3.0.1", + "glob": "7.1.3", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.3.0", + "less": "3.9.0", + "less-loader": "4.1.0", + "license-webpack-plugin": "2.1.0", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.5.0", + "minimatch": "3.0.4", + "node-sass": "4.11.0", + "opn": "5.4.0", + "parse5": "4.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "1.0.0", + "rxjs": "6.3.3", + "sass-loader": "7.1.0", + "semver": "5.6.0", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.10", + "speed-measure-webpack-plugin": "1.3.0", + "stats-webpack-plugin": "0.7.0", + "style-loader": "0.23.1", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "terser-webpack-plugin": "1.2.2", + "tree-kill": "1.2.1", + "webpack": "4.29.0", + "webpack-dev-middleware": "3.5.1", + "webpack-dev-server": "3.1.14", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", + "webpack-subresource-integrity": "1.1.0-rc.6" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.13.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/build-optimizer/-/build-optimizer-0.13.1.tgz", + "integrity": "sha1-VhUReb1kJ5GLqOD1p+WB5dqgApQ=", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.5.6", + "typescript": "3.2.4", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.13.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/build-webpack/-/build-webpack-0.13.1.tgz", + "integrity": "sha1-mNZmdlcF6Tecmy4KO2380DR6KjI=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.13.1", + "@angular-devkit/core": "7.3.1", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/core/-/core-7.3.1.tgz", + "integrity": "sha1-2S9lRXllecq9z8KVeaLJd/epbGw=", + "dev": true, + "requires": { + "ajv": "6.7.0", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular-devkit/schematics/-/schematics-7.3.1.tgz", + "integrity": "sha1-fccEAFuWbqbB7mLzgBIBg7t27uY=", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.1", + "rxjs": "6.3.3" + } + }, + "@angular/animations": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.2.15.tgz", + "integrity": "sha512-8oBt3HLgd2+kyJHUgsd7OzKCCss67t2sch15XNoIWlOLfxclqU+EfFE6t/vCzpT8/+lpZS6LU9ZrTnb+UBj5jg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cli": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@angular/cli/-/cli-7.3.1.tgz", + "integrity": "sha1-oYrN7ITesDofrnnK5BW7yPnIf/o=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.13.1", + "@angular-devkit/core": "7.3.1", + "@angular-devkit/schematics": "7.3.1", + "@schematics/angular": "7.3.1", + "@schematics/update": "0.13.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "inquirer": "6.2.1", + "npm-package-arg": "6.1.0", + "opn": "5.4.0", + "pacote": "9.4.0", + "semver": "5.6.0", + "symbol-observable": "1.2.0" + } + }, + "@angular/common": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.15.tgz", + "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.15.tgz", + "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.15.tgz", + "integrity": "sha512-+AsfyKawmj/sa+m4Pz8VSRFbCfx/3IOjAuuEjhopbyr154YpPDSu8NTbcwzq3yfbVcPwK4/4exmbQzpsndaCTg==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^2.1.1", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@angular/core": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.15.tgz", + "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz", + "integrity": "sha512-p0kcIQLtBBC1qeTA6M3nOuXf/k91E80FKquVM9zEsO2kDjI0oZJVfFYL2UMov5samlJOPN+t6lRHEIUa7ApPsw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-7.2.15.tgz", + "integrity": "sha512-Ig5Jr7mnDelaZvSbUd9YhI5am3q1ku9xelAuwvtyDKvQJeKQj3BtTagcOgWrnQBfrJ/FsA/M5Zo48ncSsV0tqQ==", + "dev": true + }, + "@angular/platform-browser": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.15.tgz", + "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz", + "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.2.15.tgz", + "integrity": "sha512-qAubRJRQanguUqJQ76J9GSZ4JFtoyhJKRmX5P23ANZJXpB6YLzF2fJmOGi+E6cV8F0tKBMEq1pjxFTisx0MXwQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha1-BuKrGb21NThVWaq7W6WXKUgoAPg=", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/generator/-/generator-7.3.2.tgz", + "integrity": "sha1-//Maey8vPa0j744BvkWw1cL8ATI=", + "dev": true, + "requires": { + "@babel/types": "^7.3.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha1-g1ctQyDipGVyY3NBE8QoaLZOScM=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha1-Oq4oXAMRwqsJXZl7jJqUytVH2BM=", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha1-9xDDjI1Fjm3ZogGvtjf8t4HOmeQ=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/parser/-/parser-7.3.2.tgz", + "integrity": "sha1-lc3t38OZKmyioTFRkcFnnKMsVc0=", + "dev": true + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha1-AFs/3w7ZbogEEzA3ng2ppwjrKQc=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha1-f/UM76nHwL0tgSMf2sEi85V3SNg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globals/-/globals-11.11.0.tgz", + "integrity": "sha1-3Pk3V/ot5Uhvvu1xGFOK33ienC4=", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@babel/types/-/types-7.3.2.tgz", + "integrity": "sha1-Qk9b5L5jP/8z+4OrjWfkqCkPWi8=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "4.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-4.0.3.tgz", + "integrity": "sha1-tQoXiTbbKKHmwh0bLSuaJs/iyd0=", + "requires": { + "tslib": "^1.9.0" + } + }, + "@ngtools/webpack": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@ngtools/webpack/-/webpack-7.3.1.tgz", + "integrity": "sha1-T/aAB/1o/cJvIuGRFRgvlvtvczU=", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.1", + "enhanced-resolve": "4.1.0", + "rxjs": "6.3.3", + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" + } + }, + "@schematics/angular": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@schematics/angular/-/angular-7.3.1.tgz", + "integrity": "sha1-b81wBCEPqTBTEMMQnAhN9cVSF3Y=", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.1", + "@angular-devkit/schematics": "7.3.1", + "typescript": "3.2.4" + } + }, + "@schematics/update": { + "version": "0.13.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@schematics/update/-/update-0.13.1.tgz", + "integrity": "sha1-SBR1ruGLSpRyoGUSsuTWQpr2gjE=", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.1", + "@angular-devkit/schematics": "7.3.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.4.0", + "rxjs": "6.3.3", + "semver": "5.6.0", + "semver-intersect": "1.4.0" + } + }, + "@types/electron": { + "version": "1.6.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/electron/-/electron-1.6.10.tgz", + "integrity": "sha1-foeIjtOIh2fMpo6SdywsjqRryHM=", + "dev": true, + "requires": { + "electron": "*" + } + }, + "@types/jasmine": { + "version": "2.8.16", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/jasmine/-/jasmine-2.8.16.tgz", + "integrity": "sha1-pssksRSdZSk71haSNQABSDjhTn0=", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/jasminewd2/-/jasminewd2-2.0.6.tgz", + "integrity": "sha1-L1eo2YdabJ7zKKFL0HC6FKBVrDk=", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/node": { + "version": "8.9.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/node/-/node-8.9.5.tgz", + "integrity": "sha1-FiuGS8cL4Hfm2yErMidUkXkp6XY=", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/selenium-webdriver/-/selenium-webdriver-3.0.14.tgz", + "integrity": "sha1-CyCiNw5rG4MiycPfyqQJ5sfAwKk=", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha1-vkfBD3g9PW7+FHH/fwQmEb1GSpI=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha1-uYhYLK+7Kwlei1VlJvMMkNBXys4=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha1-pp8K9lAuuaPARVVbGmEp09Py4xM=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha1-x7a7gQX4QDlRGis5zklPGTgYoyo=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha1-MSLUjcxslFbtmC3r4WyPNxAd85s=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha1-z48QbnRmYqDaKb3vY1/NPRJINks=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha1-3ziIKmJAgNA/dQP5Pj8XrFrAEYE=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha1-2HTXIuUeYqwgJHaTXWScgC+g4gk=", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha1-3ZoegX8cLrEFtM8QEwk8ufPJywY=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha1-nJrEHs+fvP/8lvbSZ14t4zgR5oo=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha1-yVg562N1ejGICq7HtlEtQZGsZAs=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha1-1yZ6HunEWU/T9+NymIGOxlaH22M=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha1-Btchjqn9yUpnk6qSIIFg2z0m7oI=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha1-jHTKR01PlR0B266b1wgU7iKoIAU=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha1-m7upQvIjdWhqb7dZr816ycRdoag=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha1-szHo5874+OLwB9QsOjagWAp9bKc=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha1-bj0g+mo1GfawhO+Tka1YIR77Cho=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha1-Jb0RdWLKjAAnIP+BFu+QctnKhpw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha1-xCRbbeJCy1CizJUBdP2/ZceNeBM=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha1-XIXWYvdvodNFdXZsXc1mFavNMNg=", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha1-53qX+9NFt22DJF7c0X05OxtB+zE=", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "6.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/acorn/-/acorn-6.1.0.tgz", + "integrity": "sha1-sKO+MXUsl6D3ATxfSQO3GgXbaBg=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/adm-zip/-/adm-zip-0.4.13.tgz", + "integrity": "sha1-WX4vjMNnIVHhMH0+lc3bx1ZyMUo=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha1-2J5ZmfeXh1Z0wH2H8mD8Qeg+jKk=", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha1-oROSTdP6JKC8O3gQjEUMKr7gD2c=", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha1-4857s3LWV3uxg58d/fy/WtKUjZY=", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha1-S4Mee1MUFafMUYzUBOc/YZPGNJ0=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha1-V9NbhoboUeLMBMQD8cACA5dqGBM=", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s=", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha1-BGpSrlgqIovXL1is++KWfGeHWas=", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asar": { + "version": "0.14.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asar/-/asar-0.14.6.tgz", + "integrity": "sha1-Dlb/f62XRwhFORw6K4aQt8q+9tg=", + "dev": true, + "requires": { + "chromium-pickle-js": "^0.2.0", + "commander": "^2.9.0", + "cuint": "^0.2.1", + "glob": "^6.0.4", + "minimatch": "^3.0.3", + "mkdirp": "^0.5.0", + "mksnapshot": "^0.3.4", + "tmp": "0.0.28" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "tmp": { + "version": "0.0.28", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tmp/-/tmp-0.0.28.tgz", + "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/async/-/async-2.6.1.tgz", + "integrity": "sha1-skWiPKcZMAROxT+kaqAKPofGphA=", + "dev": true, + "requires": { + "lodash": "^4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/atob/-/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "dev": true + }, + "autoprefixer": { + "version": "9.4.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/autoprefixer/-/autoprefixer-9.4.6.tgz", + "integrity": "sha1-Cs4nXjOzfeFrCaVUfb/nOpjB1EY=", + "dev": true, + "requires": { + "browserslist": "^4.4.1", + "caniuse-lite": "^1.0.30000929", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.13", + "postcss-value-parser": "^3.3.1" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/base/-/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary": { + "version": "0.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha1-lSPgATBqMkRLkHQj8d4hZCIvarE=", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha1-gdb9H+E6TA1pV99/kbdemNrEDLI=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha1-fQHG+WFsmlGrD4xUmnnf5uwz76c=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "bootstrap": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserslist/-/browserslist-4.4.1.tgz", + "integrity": "sha1-QugolUtrKaelPjUid75ClHimkGI=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000929", + "electron-to-chromium": "^1.3.103", + "node-releases": "^1.1.3" + } + }, + "browserstack": { + "version": "1.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/browserstack/-/browserstack-1.5.2.tgz", + "integrity": "sha1-F9i7dhJ6HMDqQWQk34DSGPgDZz8=", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000936", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/caniuse-lite/-/caniuse-lite-1.0.30000936.tgz", + "integrity": "sha1-XTOxGHY5iL9yG5uK1DbQQA5KEWs=", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha1-NW/04rDo5D4yLRijckYLvPOszSY=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha1-VHJri4//TfBTxCGH6AH7RBLfFJQ=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha1-Rakb0sIMlBHwljtarrmhuV4JzEg=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha1-2haMCzfntDVj+5+RLBwAfCEzie8=", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha1-LUEe92uFabbQyEBo2r6FsKpeXBc=", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha1-ANs6Hhc2VnMNEYjD1qztbX6pdxM=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/codelyzer/-/codelyzer-4.5.0.tgz", + "integrity": "sha1-pl3e7soolGUyU6ib+iKRGP+fWbE=", + "dev": true, + "requires": { + "app-root-path": "^2.1.0", + "css-selector-tokenizer": "^0.7.0", + "cssauron": "^1.4.0", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM=", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/commander/-/commander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "dev": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha1-4HR99cnLfwVNbT3D4dvERPnpKyY=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha1-hXqasKfloH2Ng37UP+Le//ZP4hI=", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/compression/-/compression-1.7.3.tgz", + "integrity": "sha1-J+DhdqryYPfywoE8PkQK258Zk9s=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true, + "optional": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha1-5/QN2KaEd9QF3Rt6hUquMksVi64=", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.6.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/core-js/-/core-js-2.6.4.tgz", + "integrity": "sha1-uIl8BixNdp3TCgrFxzl2xH+S6g0=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha1-dgORVJWAu9LfHlYrwXexPCkJctw=", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + }, + "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-zip": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.2.tgz", + "integrity": "sha512-Ab1QY4LrWMrUuo53lLnmGOby7v8ryqxJ+bKibKSiPisx+25mhut1dScVBXAYx14i/PqSrFZvR2FRRazhLbvL+g==", + "dev": true, + "requires": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=", + "dev": true + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha1-t+8znl4CSwRUZ69APVA0jbRkLQ8=", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron": { + "version": "4.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron/-/electron-4.0.4.tgz", + "integrity": "sha1-Y44yzL6d7REkw+bbuqHhbTfDIBk=", + "dev": true, + "requires": { + "@types/node": "^10.12.18", + "electron-download": "^4.1.0", + "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.12.25", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/@types/node/-/node-10.12.25.tgz", + "integrity": "sha1-DQGn3WEn3mDYYezkplCWMEKrtTg=", + "dev": true + } + } + }, + "electron-download": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-download/-/electron-download-4.1.1.tgz", + "integrity": "sha1-AuaVVnBcxFblIPngNVVu1aAV6+g=", + "dev": true, + "requires": { + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "electron-notarize": { + "version": "0.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-notarize/-/electron-notarize-0.0.5.tgz", + "integrity": "sha1-2elcdjpq+FPOFtMd3nLXPLJbBwM=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "fs-extra": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "electron-osx-sign": { + "version": "0.4.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", + "integrity": "sha1-g3dzL+eyB5afJktnWC7kcCnOCS8=", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + } + }, + "electron-packager": { + "version": "13.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-packager/-/electron-packager-13.0.1.tgz", + "integrity": "sha1-EmtpeqIAbY5d+eso+qMDthZ7CNQ=", + "dev": true, + "requires": { + "asar": "^0.14.0", + "debug": "^4.0.1", + "electron-download": "^4.1.1", + "electron-notarize": "^0.0.5", + "electron-osx-sign": "^0.4.11", + "extract-zip": "^1.0.3", + "fs-extra": "^7.0.0", + "galactus": "^0.2.1", + "get-package-info": "^1.0.0", + "parse-author": "^2.0.0", + "pify": "^4.0.0", + "plist": "^3.0.0", + "rcedit": "^1.0.0", + "resolve": "^1.1.6", + "sanitize-filename": "^1.6.0", + "semver": "^5.3.0", + "yargs-parser": "^11.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha1-AylVJ9WL081Kp1Nj81sujZe+L0I=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "electron-to-chromium": { + "version": "1.3.113", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", + "integrity": "sha1-scz2Gd9yla6he8aVHcaJYyYp5Kk=", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "env-paths": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/env-paths/-/env-paths-1.0.0.tgz", + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/errno/-/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha1-2m0NVpLvtGHggsFIF/4kJ9j10FQ=", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha1-UL8wcekzi83EMzF5Sgy1M/ATYXI=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/events/-/events-3.0.0.tgz", + "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/execa/-/execa-0.10.0.tgz", + "integrity": "sha1-/0Vqj1P5D47MxxqW0Rvfx/CCy1A=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.16.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/express/-/express-4.16.4.tgz", + "integrity": "sha1-/d72GSYQniTFFeqX/S8b2/Yt8S4=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend/-/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha1-WGbbKal4Jtvkvzr9JAcOrZ6kOic=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "file-saver": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/file-saver/-/file-saver-2.0.1.tgz", + "integrity": "sha1-f+IkKvHLxVminYF2B4qLVteB+nk=" + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flora-colossus": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/flora-colossus/-/flora-colossus-1.0.0.tgz", + "integrity": "sha1-VHKcNh7ezuAU3UQWeeGjfB13OkU=", + "dev": true, + "requires": { + "debug": "^3.1.0", + "fs-extra": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/follow-redirects/-/follow-redirects-1.6.1.tgz", + "integrity": "sha1-UUlzxEtXVzaLrYvd/lL4HwFclMs=", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha1-DYUhIuW8W+tFP7Ao6cDJvzY0DJQ=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha1-BsJ3IYRU7CiN93raVKA7hwKqy50=", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha1-SFG2ZKN4PlIAOzxm6w7uEHSTOqQ=", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "galactus": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/galactus/-/galactus-0.2.1.tgz", + "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", + "dev": true, + "requires": { + "debug": "^3.1.0", + "flora-colossus": "^1.0.0", + "fs-extra": "^4.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=", + "dev": true, + "optional": true, + "requires": { + "globule": "^1.0.0" + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha1-ndlxCgaQClxKW/V6yl2k5S/nZTc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "get-package-info": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", + "dev": true, + "requires": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob/-/glob-7.1.3.tgz", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globals/-/globals-9.18.0.tgz", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globule/-/globule-1.2.1.tgz", + "integrity": "sha1-Xf+xsZHyLSB5epNptJ6rTpg5aW0=", + "dev": true, + "optional": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true, + "optional": true + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=", + "dev": true + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=", + "dev": true + }, + "handlebars": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz", + "integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha1-ObDhat2bYFvwqe89nar0hDtMrNI=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha1-1l7b7ehDSdDcMDIIFaFdOcw8u9g=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha1-5IIb7vWyFCogJr1zkm/lN2McVAU=", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha1-CYfmu1pWBuWmkWjY+WeofxXdiqs=", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha1-UVUpcPoE1yPgTFbQQXjD+SWSu8A=", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha1-UL8k5bnIu5ivSWTJQc2wkY2ntgs=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha1-qD5i59JyrA47VRqqgoMaGbafgvg=", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ini/-/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "dev": true + }, + "inquirer": { + "version": "6.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha1-mUP8SIIWG9sLDJJ2dpx1sy2/zVI=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha1-949otdCGbCCyybjGG1KYUI3IdW8=", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha1-cN55Ht8CFATD/WFaqJEYrgQy5ak=", + "dev": true + } + } + } + } + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha1-31yZh24dLrLqLXT1IOP2aaAOzic=", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha1-XW3vPt6/boyoyunDAYOoBLX4voA=", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-api/-/istanbul-api-2.1.0.tgz", + "integrity": "sha1-N6sMLD6DBlRi9SVLlHSdYVeEbE4=", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.0", + "js-yaml": "^3.12.0", + "make-dir": "^1.3.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha1-C4keWtQjEsK5SIVU9gN5X5oiEbo=", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", + "integrity": "sha1-orVISn1EXx8xHpMZCBP6Vt+2KXE=", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.3", + "semver": "^5.5.0" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha1-mVe9WSUrNz+uXFK3tRiOb94qCUk=", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha1-zPftzQoLubj3Kf7rCTBHD5r2ZPA=", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", + "integrity": "sha1-4OWB5GHGEb5dDl7zHF8BCXWZFvs=", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha1-H1XtEKw8R/K93dUweTUSZ1TQqco=", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", + "integrity": "sha1-v9Mk7gwE9ZEZy08H2rFX0J8k1+Q=", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha1-C4keWtQjEsK5SIVU9gN5X5oiEbo=", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", + "integrity": "sha1-8egXIpqRRuhCSijl1puiIP2jQVY=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha1-C4keWtQjEsK5SIVU9gN5X5oiEbo=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/istanbul-reports/-/istanbul-reports-2.1.0.tgz", + "integrity": "sha1-h7i1XNGQG6F0iWTJjd2JAM4wbVk=", + "dev": true, + "requires": { + "handlebars": "^4.0.11" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha1-HWMq7ANBZwrTJPkrqEtLMrNeniI=", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha1-Hvo57yxfeYC7F4St5KivLeMpESE=", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/json5/-/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha1-48KmxtcGrG5gMxQDbUPNQL7v3zc=", + "dev": true, + "requires": { + "core-js": "~2.3.0", + "es6-promise": "~3.0.2", + "lie": "~3.1.0", + "pako": "~1.0.2", + "readable-stream": "~2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "karma": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.0.tgz", + "integrity": "sha512-+mvzi+gBWHPrlqt1KE0WrrjcKuePX7WWJjTYNaewp6U00inno/DTSk+QHMbc+aV09scErWjhJukxswFyS7u2qw==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.2.tgz", + "integrity": "sha512-bw3pm7kZ2Wa6+jQWYP/c7bAZy3i4GwiIiMO2EeRjrE48l8vBqC/WvFhSF0xyM8fQiPEGvwMY/5bqDG7sSEOuhg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz", + "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz", + "integrity": "sha1-QCrk7W6tudna+9QI/9oXiXwNADo=", + "dev": true, + "requires": { + "istanbul-api": "^2.0.5", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha1-Nt1NjKFUtirOlWliNvrjfK8Kfd4=", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/killable/-/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/less/-/less-3.9.0.tgz", + "integrity": "sha1-t1EcQ/N89X3Iff/ZiD7BISibFHQ=", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha1-LBNSxbCaT4QQFJAnT9UWdN5BNj4=", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + } + }, + "license-webpack-plugin": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/license-webpack-plugin/-/license-webpack-plugin-2.1.0.tgz", + "integrity": "sha1-g6yqbonDxTFu/92Ay07Jxc2O/C8=", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", + "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "dev": true + }, + "make-fetch-happen": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", + "integrity": "sha1-FBSXy4ePJDupMTbIPYq6EsIWwIM=", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "dev": true + } + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mem/-/mem-4.1.0.tgz", + "integrity": "sha1-rrm+LSH0fnivKeSsWXjor6LKW4o=", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime/-/mime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha1-C2oM5v2+lXbiXx8tL96IMNwK0Ng=", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y=", + "dev": true, + "requires": { + "mime-db": "~1.37.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "integrity": "sha1-rABZsCuWklFaY3EVsMyf7To1x7A=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha1-ys6+SSAiSX9law8PUeJoKp7S2Eg=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha1-3SfqYTYkPHyIBoToZyuzpF/ZthQ=", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "mkpath": { + "version": "0.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", + "dev": true + }, + "mksnapshot": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz", + "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==", + "dev": true, + "requires": { + "decompress-zip": "0.3.x", + "fs-extra": "0.26.7", + "request": "2.x" + }, + "dependencies": { + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nan/-/nan-2.12.1.tgz", + "integrity": "sha1-exqhk+mqhgV+PHu9CsRI53CSVVI=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=", + "dev": true + }, + "ngx-bootstrap": { + "version": "3.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ngx-bootstrap/-/ngx-bootstrap-3.2.0.tgz", + "integrity": "sha1-7OfEivC8JgRiw/d94U8i1LPd4Uk=" + }, + "ngx-clipboard": { + "version": "11.1.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ngx-clipboard/-/ngx-clipboard-11.1.9.tgz", + "integrity": "sha1-o5GFPcSeQ23kByYIY6LIFNc6kzI=", + "requires": { + "ngx-window-token": "^1.0.2", + "tslib": "^1.9.0" + } + }, + "ngx-electron": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ngx-electron/-/ngx-electron-2.1.1.tgz", + "integrity": "sha1-aQd6DU4bM8tYq45TwiwUA4l0gl4=", + "requires": { + "tslib": "^1.9.0" + } + }, + "ngx-window-token": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ngx-window-token/-/ngx-window-token-1.0.2.tgz", + "integrity": "sha1-LrrdMA/uH2Hri4UbCtl7H0b15Mw=", + "requires": { + "tslib": "^1.9.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", + "integrity": "sha1-cljJBGGC3KNFtCCO2pGNrzNpf/c=", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8=", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=", + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + } + } + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha1-xy9g2dRt4IqUDe27JfP/ovm7qnc=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-releases/-/node-releases-1.1.7.tgz", + "integrity": "sha1-sJoQOU0O2Pd3j3K7hh3eaLFGMDs=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.11.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha1-GD+uw5jpy+k7pDNi4naMqYimNpo=", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha1-57qarc75YrthJI+RchzZMrP+a90=", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha1-Fa4eJ1ilAn77TCUFVLhac323/ME=", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-packlist/-/npm-packlist-1.3.0.tgz", + "integrity": "sha1-fwHo5EQINBN5ypjP11bnspvSYmw=", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "2.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", + "integrity": "sha1-MhEdKpViY4uyyPK/J/fzCSyPrkA=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-registry-fetch": { + "version": "3.9.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz", + "integrity": "sha1-RNhBeA4oM/BqzLNEiPjHRQ0aaFY=", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/opn/-/opn-5.4.0.tgz", + "integrity": "sha1-y1Reeqt4VivrEao7+rxwQuF2EDU=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/original/-/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "optional": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha1-dVTj1XIQmofh8/U/an2F0bGU9MU=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pacote": { + "version": "9.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pacote/-/pacote-9.4.0.tgz", + "integrity": "sha1-r5eavesXXNNHw+M74yQa8e0lSAc=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "tar": { + "version": "4.4.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tar/-/tar-4.4.8.tgz", + "integrity": "sha1-sZ7sP94qluZGZt+f20DFyhvDdH0=", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "dev": true + } + } + }, + "pako": { + "version": "1.0.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pako/-/pako-1.0.8.tgz", + "integrity": "sha1-aESJCqucY1r4aK1f7MYuisu6PqQ=", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-asn1/-/parse-asn1-5.1.3.tgz", + "integrity": "sha1-FgDGzAcnNl1ouX86p4k55zWnUgQ=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/plist/-/plist-3.0.1.tgz", + "integrity": "sha1-qbkx0XwwTokS7wujvdYYK68uH4w=", + "dev": true, + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + } + }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha1-vqaGMuVLLhOrewxHdem0G/Jw5Eo=", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha1-RSftaxyg2CxTzl7BogQcI0a71uU=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha1-z4x6sLXMq1ZJAkU25WX4QZKLcVM=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha1-8TEt2/WRLNdHF3CDxe96GdYu5IQ=", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "promise": { + "version": "7.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha1-A8NlnKGAB7aaUP2Cp+vMUWJhFR8=", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/protractor/-/protractor-5.4.2.tgz", + "integrity": "sha1-Mp7+N/SLIUGrlGd5m+LU0S60jBM=", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webdriver-manager/-/webdriver-manager-12.1.1.tgz", + "integrity": "sha1-ZsMnH2nO/aqf38pheula+uQcPGI=", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha1-7PxzO/Iv+Mb0B/onUye5q2fki5M=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.31", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/psl/-/psl-1.1.31.tgz", + "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pump/-/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/qs/-/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha1-fe2N+/eHncxg0KZErGdUsoOtF+8=", + "dev": true + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha1-GzJOzmtXBuFThVvBFIxlu39uoMM=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha1-P5iJ5z2tvamkJLznmAm0EzrUZAU=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rc/-/rc-1.2.8.tgz", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "rcedit": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rcedit/-/rcedit-1.1.1.tgz", + "integrity": "sha1-eTIYkzV+dPeVRmF9eSxXKzjS9/A=", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "dev": true + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/request/-/request-2.88.0.tgz", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ret/-/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha1-PGp/pCDoRKgTkPsRWKnsYU9LrVU=", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true, + "optional": true + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha1-Fv1ROMuLQkv4p1lSihly1yqtBp0=", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha1-lAWnPDYNRJsjKDmRmobDltN5/Z0=", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha1-K6h6FmLAILiYjJga5iyyoBKY6vw=", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0=", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/semver/-/semver-5.6.0.tgz", + "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ=", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha1-vdnAa+3N0v7bjNNSw8Q+6MYTIfM=", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/send/-/send-0.16.2.tgz", + "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime/-/mime-1.4.1.tgz", + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha1-TR9pfsSUKahHym9EKip1USbE2Hk=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha1-RIDNBuiC72iyrYij6lSDLixItXE=", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "^1.0.1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/smart-buffer/-/smart-buffer-4.0.2.tgz", + "integrity": "sha1-UgeFjDgVzGkRBwPGuU5GwVY0OV0=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha1-EvydbLZj2lc509xftuhofalcsXc=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "socks": { + "version": "2.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/socks/-/socks-2.2.3.tgz", + "integrity": "sha1-c5nOEeGbKplxU8mDqcy2MGch8tw=", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha1-WTa/i3B6mTB5xvN9sgkYIb/6ZHM=", + "dev": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha1-wYsNxuI79m9nkkN1V8VpoR4HInE=", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha1-IhQIC8nVGDJRHuK6uW48L5NTEgw=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha1-gcDOjyFHR1YUi7tfO/wPNr8V124=", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha1-gfIitadDoymqEs6mo5DmDpthPFI=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha1-7Wu8bFuliwkAOf8YzmcFFXla6wY=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.0.tgz", + "integrity": "sha1-x/+v71E989Y9XVRsj8GYbfxJaao=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stats-webpack-plugin/-/stats-webpack-plugin-0.7.0.tgz", + "integrity": "sha1-zP/pt0Xei7sVVXHgY/gmP8DivAY=", + "dev": true, + "requires": { + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", + "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha1-y5FUYG8+dxq2xKtjcCahBJF02SU=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha1-J6cGQgsFo44DjnyssVNXjUUFE8Y=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=", + "dev": true + }, + "tapable": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha1-TSl5I8WnKkI2DeKrUtrfquwAAY4=", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "terser": { + "version": "3.16.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/terser/-/terser-3.16.1.tgz", + "integrity": "sha1-Ww3U+h/9CwtDwkk7LDZP0XkWBJM=", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.9" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", + "integrity": "sha1-m/86iRrWFIVafd4NcH99takn49k=", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha1-TB+u1Z9FGEUw+51/oSOk0EqYRy0=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "dev": true + } + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/through2/-/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "touch": { + "version": "0.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/touch/-/touch-0.0.3.tgz", + "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha1-U5jzdOLykrncx7LnHjClw7tsdDo=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.2" + } + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=" + }, + "tslint": { + "version": "5.11.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tslint/-/tslint-5.11.0.tgz", + "integrity": "sha1-mPMMAurjzecAYgHkwzywi0hYHu0=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.27.2" + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha1-MrSIUBRnrL7dS4VJhnOggSrKC5k=", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha1-xYXLlSkSJj2RW0YnJs4kS6UQ7z0=", + "dev": true + }, + "uglify-js": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.2.tgz", + "integrity": "sha512-+gh/xFte41GPrgSMJ/oJVq15zYmqr74pY9VoM69UzMzq9NFk4YDylclb1/bhEzZSaUQjbW5RvniHeq1cdtRYjw==", + "dev": true, + "optional": true, + "requires": { + "commander": "2.20.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha1-Xp7cbRzo+yZNsYpQfvm9hURFHKY=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/upath/-/upath-1.1.0.tgz", + "integrity": "sha1-NSVll+RqWB20eT0M5H+prr/J+r0=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha1-ysFVbpX6oDA2kf7Fz51aG8NGSPg=", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/use/-/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/util/-/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha1-V9epPADbTMjVVuTT20tdsKgMO7c=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.29.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack/-/webpack-4.29.0.tgz", + "integrity": "sha1-8s/vg/euQEuoif9dQ+/Shcom51A=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha1-unT1l9K+LqiAExdG7hfQoJPGgYc=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.5.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-dev-middleware/-/webpack-dev-middleware-3.5.1.tgz", + "integrity": "sha1-kmW3dC71D1T1TB2a8CL8F8G+m4g=", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime/-/mime-2.4.0.tgz", + "integrity": "sha1-4FH9iBNYWF8yed8zP+aU2gvP/dY=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.14", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha1-YPsim5l/xaCh/GI3QhAwGAlZ1Gk=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "semver": "^5.6.0", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha1-ZW17vICUxMeI6lPFhAkIycfQY8c=", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/execa/-/execa-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mime": { + "version": "2.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/mime/-/mime-2.4.0.tgz", + "integrity": "sha1-4FH9iBNYWF8yed8zP+aU2gvP/dY=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha1-ETL+zJAm/ZDw7O2sXL/3XR+0WJA=", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha1-/lgjQ2k5KvM+y+9TgZFx7/D1qtw=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha1-XpI8+ALqKs5P1a8dMkc2imM0ibQ=", + "dev": true, + "requires": { + "lodash": "^4.17.5" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha1-KijcufH0X+lg2PFJMlK17mUw+oU=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha1-N/bxJk4es3jkFGWpjagPrXariIY=", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha1-rsxAWXb6talVJhgIRvDboojzpKA=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/sax/-/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha1-5pgYneSd0qGMxWh7BeF8jkOUMCA=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.29", + "resolved": "https://repo.tick42.com:443/api/npm/tick42-npm/zone.js/-/zone.js-0.8.29.tgz", + "integrity": "sha1-jc6Sqg3VU7ULxb+7kK+Zhq2EWhI=" + } + } +} diff --git a/toolbar-ui-angular/package.json b/toolbar-ui-angular/package.json new file mode 100644 index 0000000..52eb4ec --- /dev/null +++ b/toolbar-ui-angular/package.json @@ -0,0 +1,60 @@ +{ + "name": "toolbar-ui", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --base-href ./", + "test": "ng test", + "test:watch": "ng test --code-coverage", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "author": "Tick42", + "license": "Apache-2.0", + "dependencies": { + "@angular/animations": "^7.2.15", + "@angular/common": "^7.2.15", + "@angular/compiler": "^7.2.15", + "@angular/core": "^7.2.15", + "@angular/forms": "^7.2.15", + "@angular/platform-browser": "^7.2.15", + "@angular/platform-browser-dynamic": "^7.2.15", + "@angular/router": "^7.2.15", + "@ng-bootstrap/ng-bootstrap": "^4.0.3", + "bootstrap": "^4.3.1", + "core-js": "^2.5.4", + "file-saver": "^2.0.1", + "ngx-bootstrap": "^3.2.0", + "ngx-clipboard": "^11.1.9", + "ngx-electron": "^2.1.1", + "rxjs": "~6.3.3", + "tslib": "^1.9.0", + "zone.js": "~0.8.26" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.13.0", + "@angular/cli": "~7.3.1", + "@angular/compiler-cli": "^7.2.15", + "@angular/language-service": "^7.2.15", + "@types/electron": "^1.6.10", + "@types/jasmine": "~2.8.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.5.0", + "electron": "^4.0.4", + "electron-packager": "^13.0.1", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "^4.4.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~1.1.2", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.11.0", + "typescript": "~3.2.2" + } +} diff --git a/toolbar-ui-angular/preload.js b/toolbar-ui-angular/preload.js new file mode 100644 index 0000000..2074bc2 --- /dev/null +++ b/toolbar-ui-angular/preload.js @@ -0,0 +1,21 @@ +/** + * Copyright © 2014-2018 Tick42 BG OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const remote = require('electron').remote; + +window.fdc3LauncherToolbar = remote.getGlobal('fdc3LauncherToolbar'); +window.logStream = remote.getGlobal('logStream'); diff --git a/toolbar-ui-angular/src/app/app-config/app-config.component.html b/toolbar-ui-angular/src/app/app-config/app-config.component.html new file mode 100644 index 0000000..b041242 --- /dev/null +++ b/toolbar-ui-angular/src/app/app-config/app-config.component.html @@ -0,0 +1,15 @@ + + +
+

"{{app?.title}}" JSON Config

+
{{appJSONConfig}}
+
diff --git a/toolbar-ui-angular/src/app/app-config/app-config.component.spec.ts b/toolbar-ui-angular/src/app/app-config/app-config.component.spec.ts new file mode 100644 index 0000000..38edfb4 --- /dev/null +++ b/toolbar-ui-angular/src/app/app-config/app-config.component.spec.ts @@ -0,0 +1,77 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {RouterTestingModule} from '@angular/router/testing'; +import {ActivatedRoute, Params} from '@angular/router'; +import {ElectronService} from 'ngx-electron'; + +import {AppConfigComponent} from './app-config.component'; + +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {IApplication} from '../app'; + +const applications: IApplication[] = require('../../mock-data/apps.json'); +const appId: string = applications[0].appId; + +describe('App Config Component', () => { + let component: AppConfigComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule.withRoutes([]) + ], + declarations: [ + AppConfigComponent + ], + providers: [ + ElectronService, + HelperService, + InitializeService, + { + provide: ActivatedRoute, + useValue: { + params: { + subscribe: (fn: (value: Params) => void) => fn({id: appId}), + } + } + } + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AppConfigComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + fixture.detectChanges(); + }); + + it('Should subscribe for apps', fakeAsync(() => { + initializeService.init(); + tick(); + initializeService.apps.subscribe(() => { + expect(component.app.appId).toEqual(appId); + }); + })); +}); diff --git a/toolbar-ui-angular/src/app/app-config/app-config.component.ts b/toolbar-ui-angular/src/app/app-config/app-config.component.ts new file mode 100644 index 0000000..8ec6b42 --- /dev/null +++ b/toolbar-ui-angular/src/app/app-config/app-config.component.ts @@ -0,0 +1,84 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, NgZone, OnDestroy, OnInit} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; +import {Subscription} from 'rxjs/index'; + +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {IApplication} from '../app'; + +@Component({ + selector: 'app-config', + templateUrl: './app-config.component.html' +}) +export class AppConfigComponent implements OnInit, OnDestroy { + public app: IApplication; + public appJSONConfig: string; + private subscriptions: Subscription[] = []; + + constructor(private route: ActivatedRoute, + private zone: NgZone, + private initializeService: InitializeService, + private helperService: HelperService) { + } + + public ngOnInit() { + this.subscribeForApps(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Subscribe for apps + */ + private subscribeForApps(): void { + this.subscriptions.push(this.initializeService.apps.subscribe((apps: IApplication[]) => { + this.setCurrentAppConfig(apps); + })); + } + + /** + * Set JSON configuration from provided url hash parameter app ID + * @param apps: list of apps + */ + private setCurrentAppConfig(apps: IApplication[]): void { + this.subscriptions.push(this.route.params.subscribe((params: {id: string}) => { + const appId: string = params.id; + this.app = this.getApp(apps, appId); + if (this.app) { + this.zone.run(() => { + this.appJSONConfig = JSON.stringify(this.helperService.getFdc3LauncherToolbarApp(this.app), null, 2); + }); + } + })); + } + + /** + * Get app + * @param apps: list of apps + * @param appId: app.appId + * @returns app + */ + private getApp(apps: IApplication[], appId: string): IApplication { + return apps.filter((app: IApplication) => app.appId === appId)[0]; + } +} diff --git a/toolbar-ui-angular/src/app/app-routing.module.ts b/toolbar-ui-angular/src/app/app-routing.module.ts new file mode 100644 index 0000000..4bcb171 --- /dev/null +++ b/toolbar-ui-angular/src/app/app-routing.module.ts @@ -0,0 +1,38 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {NgModule} from '@angular/core'; +import {RouterModule, Routes} from '@angular/router'; + +import {ToolbarComponent} from './toolbar/toolbar.component'; +import {LogsComponent} from './logs/logs.component'; +import {AppConfigComponent} from './app-config/app-config.component'; + +const routes: Routes = [ + {path: 'toolbar', component: ToolbarComponent}, + {path: 'logs', component: LogsComponent}, + {path: 'app-config/:id', component: AppConfigComponent}, + {path: '', pathMatch: 'full', redirectTo: 'toolbar'}, + {path: '*', pathMatch: 'full', redirectTo: 'toolbar'} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, {useHash: true})], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/toolbar-ui-angular/src/app/app.component.html b/toolbar-ui-angular/src/app/app.component.html new file mode 100644 index 0000000..390c5ae --- /dev/null +++ b/toolbar-ui-angular/src/app/app.component.html @@ -0,0 +1,12 @@ + + + diff --git a/toolbar-ui-angular/src/app/app.component.spec.ts b/toolbar-ui-angular/src/app/app.component.spec.ts new file mode 100644 index 0000000..22ce827 --- /dev/null +++ b/toolbar-ui-angular/src/app/app.component.spec.ts @@ -0,0 +1,82 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {RouterTestingModule} from '@angular/router/testing'; +import {ElectronService} from 'ngx-electron'; +import {of} from 'rxjs'; + +import {AppComponent} from './app.component'; +import {InitializeService} from './services/initialize.service'; +import {HelperService} from './services/helper.service'; +import {IFdc3LauncherToolbarProvider, IApplication} from './app'; + +const applications: IApplication[] = require('../mock-data/apps.json'); +const providers: IFdc3LauncherToolbarProvider[] = require('../mock-data/providers.json'); + +describe('App Component', () => { + let component: AppComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + + const mockProviders: IFdc3LauncherToolbarProvider[] = providers.map((provider: IFdc3LauncherToolbarProvider) => { + provider.getApps = () => new Promise((resolve) => + resolve(applications.filter((app: IApplication) => app.provider.name === provider.name))); + return provider; + }); + (window as any).fdc3LauncherToolbar = { + addProvider: () => {}, + updateProvider: () => {}, + deleteProvider: () => {}, + providers: { + subscribe: (fn) => of(fn(mockProviders)) + } + }; + (window as any).logStream = { + subscribe: (fn) => of(fn([])), + next: () => {} + }; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule.withRoutes([]) + ], + declarations: [ + AppComponent + ], + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AppComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + spyOn(initializeService, 'init'); + fixture.detectChanges(); + }); + + it('Should initialize', () => { + expect(initializeService.init).toHaveBeenCalled(); + }); +}); diff --git a/toolbar-ui-angular/src/app/app.component.ts b/toolbar-ui-angular/src/app/app.component.ts new file mode 100644 index 0000000..7a4496e --- /dev/null +++ b/toolbar-ui-angular/src/app/app.component.ts @@ -0,0 +1,32 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, OnInit} from '@angular/core'; +import {InitializeService} from "./services/initialize.service"; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html' +}) +export class AppComponent implements OnInit { + constructor(private initializeService: InitializeService) { + } + + public ngOnInit(): void { + this.initializeService.init(); + } +} diff --git a/toolbar-ui-angular/src/app/app.module.ts b/toolbar-ui-angular/src/app/app.module.ts new file mode 100644 index 0000000..d998ca5 --- /dev/null +++ b/toolbar-ui-angular/src/app/app.module.ts @@ -0,0 +1,72 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {BrowserModule} from '@angular/platform-browser'; +import {NgModule} from '@angular/core'; +import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; +import {AccordionModule, ModalModule} from 'ngx-bootstrap'; +import {FormsModule} from '@angular/forms'; +import {ClipboardModule} from 'ngx-clipboard'; +import {NgxElectronModule} from 'ngx-electron'; + +import {AppRoutingModule} from './app-routing.module'; + +import {AppComponent} from './app.component'; +import {ToolbarComponent} from './toolbar/toolbar.component'; +import {ListOfAppsComponent} from './list-of-apps/list-of-apps.component'; +import {ModalDialogComponent} from './shared/modal-dialog/modal-dialog.component'; +import {SettingsComponent} from './settings/settings.component'; +import {SettingsLogsComponent} from './settings/logs/settings-logs.component'; +import {LogsComponent} from './logs/logs.component'; +import {AppConfigComponent} from './app-config/app-config.component'; +import {AppDirectoryFormModalComponent} from './settings/app-directory-form-modal/app-directory-form-modal.component'; + +import {InitializeService} from './services/initialize.service'; +import {HelperService} from './services/helper.service'; + +@NgModule({ + imports: [ + AccordionModule.forRoot(), + AppRoutingModule, + BrowserModule, + ClipboardModule, + FormsModule, + ModalModule.forRoot(), + NgbModule.forRoot(), + NgxElectronModule + ], + declarations: [ + AppComponent, + AppConfigComponent, + ListOfAppsComponent, + LogsComponent, + ModalDialogComponent, + SettingsComponent, + SettingsLogsComponent, + ToolbarComponent, + AppDirectoryFormModalComponent + ], + providers: [ + HelperService, + InitializeService + ], + bootstrap: [ + AppComponent + ] +}) +export class AppModule { +} diff --git a/toolbar-ui-angular/src/app/app.ts b/toolbar-ui-angular/src/app/app.ts new file mode 100644 index 0000000..3fefe36 --- /dev/null +++ b/toolbar-ui-angular/src/app/app.ts @@ -0,0 +1,72 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface IFdc3LauncherToolbarApplication { + appId: string; + name: string; + version: string; + title: string; + tooltip: string; + description: string; + images: string[]; + contactEmail: string; + supportEmail: string; + publisher: string; + icons: string[]; + customConfig: any[]; + intents: any[]; + manifestType: string; + manifest: string | IApplicationManifest; + start: () => any; +} + +export interface IApplication extends IFdc3LauncherToolbarApplication { + provider: IProvider; + iconPath: string; + showApp: boolean; + isFavourite: boolean; +} + +export interface IApplicationManifest { + type: string; + path?: string; + exePath?: string; + url?: string; +} + +export interface IFdc3LauncherToolbarProvider { + name: string; + apiUrl: string; + email: string; + password: string; + authUrl: string; + getApps?: () => any; +} + +export interface IProvider extends IFdc3LauncherToolbarProvider { + enabled: boolean; + status: string; +} + +export interface ILog { + timestamp: number; + type: string; + origin: string; + message: string; + show: boolean; + date?: string; +} diff --git a/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.html b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.html new file mode 100644 index 0000000..675551b --- /dev/null +++ b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.html @@ -0,0 +1,51 @@ + + +
+
+
+ +
+
+
    +
  • + + + +
  • +
+
There are no applications available
+
+ + + + + + + diff --git a/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.spec.ts b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.spec.ts new file mode 100644 index 0000000..bff6398 --- /dev/null +++ b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.spec.ts @@ -0,0 +1,112 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {FormsModule} from '@angular/forms'; +import {ClipboardModule} from 'ngx-clipboard'; +import {ModalModule} from 'ngx-bootstrap'; + +import {ListOfAppsComponent} from './list-of-apps.component'; +import {ModalDialogComponent} from '../shared/modal-dialog/modal-dialog.component'; + +import {ElectronService} from 'ngx-electron'; +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {IApplication, IFdc3LauncherToolbarApplication} from '../app'; + +describe('List Of Apps Component', () => { + let component: ListOfAppsComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + let helperService: HelperService; + + (window as any).process = { + execFile: () => {}, + exec: () => {} + }; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + FormsModule, + ClipboardModule, + ModalModule.forRoot(), + ], + declarations: [ + ListOfAppsComponent, + ModalDialogComponent + ], + providers: [ + ElectronService, + InitializeService, + HelperService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ListOfAppsComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + helperService = TestBed.get(HelperService); + fixture.detectChanges(); + }); + + it('Should show app config', fakeAsync(() => { + spyOn(component.logModalDialog, 'show'); + + initializeService.init(); + tick(); + initializeService.apps.subscribe((apps: IApplication[]) => { + const app: IApplication = apps[0]; + component.showAppConfig(app); + expect(component.currentAppId).toEqual(app.appId); + expect(component.appJSONConfigTitle).toEqual(`"${app.title}" JSON Config`); + const fdc3ToolbarApp: IFdc3LauncherToolbarApplication = Object.assign({}, app); + fdc3ToolbarApp.manifest = JSON.parse(fdc3ToolbarApp.manifest as string); + delete (fdc3ToolbarApp as IApplication).iconPath; + delete (fdc3ToolbarApp as IApplication).showApp; + delete (fdc3ToolbarApp as IApplication).isFavourite; + expect(component.appJSONConfig).toEqual(JSON.stringify(fdc3ToolbarApp, null, 2)); + }); + })); + + it('Should Toggle Favourite apps', fakeAsync(() => { + spyOn(initializeService, 'updateApps'); + initializeService.init(); + tick(); + initializeService.apps.subscribe((apps: IApplication[]) => { + const favApp: IApplication = apps[0]; + component.toggleFavouriteApp(favApp); + expect(initializeService.updateApps).toHaveBeenCalledWith(favApp, 'isFavourite'); + }); + })); + + it('Should update on search', () => { + spyOn(initializeService, 'filterDisplayedApps'); + + const searchValue: string = 'search value'; + component.onSearch(searchValue); + component.searchValueChanged.subscribe((value: string) => { + expect(value).toEqual(searchValue); + expect(component.searchValue).toEqual(searchValue); + expect(initializeService.filterDisplayedApps).toHaveBeenCalledWith(searchValue); + }); + }); +}); diff --git a/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.ts b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.ts new file mode 100644 index 0000000..24add6a --- /dev/null +++ b/toolbar-ui-angular/src/app/list-of-apps/list-of-apps.component.ts @@ -0,0 +1,198 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, NgZone, OnDestroy, OnInit, ViewChild} from '@angular/core'; +import {Subscription} from 'rxjs/index'; +import {ElectronService} from 'ngx-electron'; +import {Subject} from 'rxjs'; +import {debounceTime} from 'rxjs/operators'; + +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {ModalDialogComponent} from '../shared/modal-dialog/modal-dialog.component'; + +import {IApplication, IFdc3LauncherToolbarApplication} from '../app'; + +@Component({ + selector: 'app-list-of-apps', + templateUrl: './list-of-apps.component.html' +}) +export class ListOfAppsComponent implements OnInit, OnDestroy { + @ViewChild('logModalDialog') logModalDialog: ModalDialogComponent; + @ViewChild('appStartErrorModalDialog') appStartErrorModalDialog: ModalDialogComponent; + public apps: IApplication[] = []; + public currentAppId: string; + public appJSONConfigTitle: string; + public appJSONConfig: string; + public showContent: boolean; + public showSettings: boolean; + public searchValue: string; + public searchValueChanged: Subject = new Subject(); + public appStartErrorTitle: string; + public appStartErrorMessage: string; + private subscriptions: Subscription[] = []; + + constructor(private electronService: ElectronService, + private initializeService: InitializeService, + private helperService: HelperService, + private zone: NgZone) { + } + + ngOnInit() { + this.subscribeForApps(); + this.subscribeForShowContent(); + this.subscribeForShowSettings(); + this.subscribeForSearchChanges(); + this.subscribeForAppStartFail(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Start App + * @param app: app + */ + public startApp(app: IApplication): void { + app.start(); + } + + /** + * Show app configuration + * @param app: app + */ + public showAppConfig(app: IApplication): void { + this.currentAppId = app.appId; + this.appJSONConfigTitle = `"${app.title}" JSON Config`; + this.appJSONConfig = this.getAppJSONConfig(app); + this.logModalDialog.show(); + (window as any).logStream.next([`Show JSON config for app "${app.title || app.name}"`, 'INFO', 'Angular']); +} + + /** + * Toggle favourite app in the navbar + * @param app: app + */ + public toggleFavouriteApp(favouriteApp: IApplication): void { + favouriteApp.isFavourite = !favouriteApp.isFavourite; + this.initializeService.updateApps(favouriteApp, 'isFavourite'); + } + + /** + * Open app JSON config in new Electron window + */ + public openInNewWindow(): void { + const preload: string = this.electronService.ipcRenderer.sendSync('get-preload-path'); + const win = new this.electronService.remote.BrowserWindow({ + width: 700, + height: 800, + webPreferences: {preload}, + autoHideMenuBar: true + }); + const dirName: string = location.href.split('/').slice(0, -2).join('/'); + win.loadURL(`${dirName}/assets/app-config.html#${this.currentAppId}`); + } + + /** + * Update filter value on change + * @param text: filter input value + */ + public onSearch(text: string): void { + this.searchValueChanged.next(text); + } + + /** + * Get app JSON config + * @param app: app + * @returns string: the app JSON config + */ + private getAppJSONConfig(app: IApplication): string { + const fdc3ToolbarApp: IFdc3LauncherToolbarApplication = this.helperService.getFdc3LauncherToolbarApp(app); + fdc3ToolbarApp.manifest = JSON.parse(fdc3ToolbarApp.manifest as string); + return JSON.stringify(fdc3ToolbarApp, null, 2); + } + + /** + * Subscribe for apps + * Display them alphabetically + */ + private subscribeForApps(): void { + this.subscriptions.push(this.initializeService.apps.subscribe((apps: IApplication[]) => { + this.zone.run(() => { + const filteredApp: IApplication[] = apps.filter((app: IApplication) => app.showApp); + this.apps = this.helperService.sortArrayAlphabeticallyByKey(filteredApp, 'title'); + }); + })); + } + + /** + * Subscribe for show content + * The content of the app is the list of apps or the settings + * Show content is initially set to false + */ + private subscribeForShowContent(): void { + this.subscriptions.push(this.helperService.showContent.subscribe((showContent: boolean) => { + this.showContent = showContent; + })); + } + + /** + * Subscribe for show settings + * Show settings is initially set to false + */ + private subscribeForShowSettings(): void { + this.subscriptions.push(this.helperService.showSettings.subscribe((showSettings: boolean) => { + this.showSettings = showSettings; + })); + } + + /** + * Subscribe for search change + * Filter the displayed apps depending on the search value + */ + private subscribeForSearchChanges(): void { + this.searchValueChanged + .pipe(debounceTime(300)) + .subscribe((searchValue: string) => { + this.searchValue = searchValue; + this.initializeService.filterDisplayedApps(searchValue); + }); + } + + /** + * Subscribe for app start fail + * If app start fails, show modal dialog + */ + private subscribeForAppStartFail(): void { + this.subscriptions.push(this.helperService.appStartFail.subscribe((args: {startApp: IApplication, message: string}) => { + this.showAppStartFailModal(...(Object.values(args) as any[])); + })); + } + + /** + * Show app start fail modal dialog + * @param startApp: app + * @param message: message to be displayed + */ + private showAppStartFailModal(startApp?: IApplication, message?: string): void { + this.appStartErrorTitle = `Failed to start ${startApp.title || startApp.name}`; + this.appStartErrorMessage = message; + this.appStartErrorModalDialog.show(); + } +} diff --git a/toolbar-ui-angular/src/app/logs/logs.component.html b/toolbar-ui-angular/src/app/logs/logs.component.html new file mode 100644 index 0000000..132ca3b --- /dev/null +++ b/toolbar-ui-angular/src/app/logs/logs.component.html @@ -0,0 +1,17 @@ + + +
+

Logs

+
+ +
+
diff --git a/toolbar-ui-angular/src/app/logs/logs.component.spec.ts b/toolbar-ui-angular/src/app/logs/logs.component.spec.ts new file mode 100644 index 0000000..cba43ca --- /dev/null +++ b/toolbar-ui-angular/src/app/logs/logs.component.spec.ts @@ -0,0 +1,53 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {LogsComponent} from './logs.component'; +import {SettingsLogsComponent} from '../settings/logs/settings-logs.component'; + +import {ElectronService} from 'ngx-electron'; +import {HelperService} from '../services/helper.service'; + +describe('Logs Component', () => { + let component: LogsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + LogsComponent, + SettingsLogsComponent + ], + providers: [ + ElectronService, + HelperService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LogsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('Should create component', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/toolbar-ui-angular/src/app/logs/logs.component.ts b/toolbar-ui-angular/src/app/logs/logs.component.ts new file mode 100644 index 0000000..9a28504 --- /dev/null +++ b/toolbar-ui-angular/src/app/logs/logs.component.ts @@ -0,0 +1,25 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component} from '@angular/core'; + +@Component({ + selector: 'app-logs', + templateUrl: './logs.component.html' +}) +export class LogsComponent { +} diff --git a/toolbar-ui-angular/src/app/services/helper.service.spec.ts b/toolbar-ui-angular/src/app/services/helper.service.spec.ts new file mode 100644 index 0000000..3bb791e --- /dev/null +++ b/toolbar-ui-angular/src/app/services/helper.service.spec.ts @@ -0,0 +1,80 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {ElectronService} from 'ngx-electron'; + +import {HelperService} from './helper.service'; + +import {IApplication, ILog} from '../app'; +import {InitializeService} from './initialize.service'; + +const applications: IApplication[] = require('../../mock-data/apps.json'); + +describe('Helper Service', () => { + let service: HelperService; + let initializeService: InitializeService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }); + })); + + beforeEach(() => { + service = TestBed.get(HelperService); + initializeService = TestBed.get(InitializeService); + }); + + it('Should sort array alphabetically', () => { + const apps: IApplication[] = applications; + expect(apps[0].title).toEqual('Client Contact'); + expect(apps[1].title).toEqual('Glue42 Website'); + expect(apps[2].title).toEqual('Excel'); + const sortedArrey = service.sortArrayAlphabeticallyByKey(apps, 'title'); + expect(sortedArrey[0].title).toEqual('Client Contact'); + expect(sortedArrey[1].title).toEqual('Excel'); + expect(sortedArrey[2].title).toEqual('Glue42 Website'); + }); + + it('Should add logs', () => { + const log = {timestamp: Date.now(), type: 'type', origin: 'origin', message: 'message'}; + service.addLog(log.timestamp, log.type, log.origin, log.message); + service.logs.subscribe((logs: ILog[]) => { + expect(logs.length).toEqual(1); + expect(logs[0].timestamp).toEqual(log.timestamp); + expect(logs[0].type).toEqual(log.type); + expect(logs[0].origin).toEqual(log.origin); + expect(logs[0].message).toEqual(log.message); + }); + }); + + it('Should convert apps to Fdc3LauncherToolbarApps', fakeAsync(() => { + initializeService.init(); + tick(); + initializeService.apps.subscribe((apps: IApplication[]) => { + const fdc3ToolbarApp = service.getFdc3LauncherToolbarApp(apps[0]); + expect((fdc3ToolbarApp as IApplication).iconPath).toBeUndefined(); + expect((fdc3ToolbarApp as IApplication).showApp).toBeUndefined(); + expect((fdc3ToolbarApp as IApplication).isFavourite).toBeUndefined(); + }); + })); +}); diff --git a/toolbar-ui-angular/src/app/services/helper.service.ts b/toolbar-ui-angular/src/app/services/helper.service.ts new file mode 100644 index 0000000..9179798 --- /dev/null +++ b/toolbar-ui-angular/src/app/services/helper.service.ts @@ -0,0 +1,84 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Injectable} from '@angular/core'; +import {BehaviorSubject, Subject} from 'rxjs/index'; +import {ElectronService} from 'ngx-electron'; + +import {IApplication, ILog, IProvider, IFdc3LauncherToolbarApplication} from '../app'; + +@Injectable() +export class HelperService { + public showSettings: BehaviorSubject = new BehaviorSubject(false); + public showContent: BehaviorSubject = new BehaviorSubject(false); + public appStartFail: Subject<{startApp: IApplication, message: string}> = + new Subject<{startApp: IApplication, message: string}>(); + public showAppDirectoryModal: Subject<{show: boolean, provider?: IProvider}> = + new Subject<{show: boolean, provider?: IProvider}>(); + public logs: BehaviorSubject = new BehaviorSubject([]); + public clearLogsFilters: Subject = new Subject(); + private innerLogs: ILog[] = []; + + constructor(private electronService: ElectronService) { + } + + /** + * Sort array of apps alphabetically + * @param apps: array of apps + * @param key: key to sort by + * @returns IApplication[]: array of apps + */ + public sortArrayAlphabeticallyByKey(apps: IApplication[], key: string): IApplication[] { + return apps.sort((a: IApplication, b: IApplication) => { + const nameA: string = a[key].toUpperCase(); + const nameB: string = b[key].toUpperCase(); + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + return 0; + }); + } + + /** + * Add log to the list of displayed logs + * @param timestamp: timestamp from log creation + * @param type: 'INFO' | 'WARNING' | 'ERROR' + * @param origin: 'Angular' | 'Electron' | 'Toolbar' + * @param message: log message + */ + public addLog(timestamp: number, type: string, origin: string, message: string): void { + this.innerLogs.unshift({timestamp, type, origin, message, show: true}); + this.logs.next(this.innerLogs); + } + + /** + * Get Fdc3 Launcher Toolbar app + * Converts the modified app into the originally received app from fdc3LauncherToolbar providers + * @param app: modified app + * @returns IFdc3LauncherToolbarApplication: fdc3LauncherToolbar app + */ + public getFdc3LauncherToolbarApp(app: IApplication): IFdc3LauncherToolbarApplication { + const fdc3ToolbarApp: IApplication | IFdc3LauncherToolbarApplication = Object.assign({}, app); + delete (fdc3ToolbarApp as IApplication).iconPath; + delete (fdc3ToolbarApp as IApplication).showApp; + delete (fdc3ToolbarApp as IApplication).isFavourite; + return fdc3ToolbarApp; + } +} diff --git a/toolbar-ui-angular/src/app/services/initialize.service.spec.ts b/toolbar-ui-angular/src/app/services/initialize.service.spec.ts new file mode 100644 index 0000000..2d6c7b7 --- /dev/null +++ b/toolbar-ui-angular/src/app/services/initialize.service.spec.ts @@ -0,0 +1,89 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, fakeAsync, TestBed, tick} from '@angular/core/testing'; + +import {ElectronService} from 'ngx-electron'; +import {HelperService} from './helper.service'; +import {InitializeService} from './initialize.service'; + +import {IApplication, IProvider} from '../app'; + +const initProviders: IProvider[] = require('../../mock-data/providers.json'); +const initApps: IApplication[] = require('../../mock-data/apps.json'); + +describe('Initialize Service', () => { + let service: InitializeService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }); + })); + + beforeEach(() => { + service = TestBed.get(InitializeService); + }); + + it('Should update providers', fakeAsync(() => { + service.init(); + tick(); + const provider = initProviders[0]; + const enabled: boolean = provider.enabled; + service.updateProviders(provider.name, !enabled); + service.providers.subscribe((providers: IProvider[]) => { + const updatedProviders: IProvider[] = providers.filter((prov: IProvider) => prov.name === provider.name); + if (updatedProviders[0]) { + expect(updatedProviders[0].enabled).toEqual(!enabled); + } + }); + })); + + it('Should update apps', fakeAsync(() => { + service.init(); + tick(); + const application = initApps[0]; + application.showApp = !application.showApp; + service.updateApps(application, 'showApp'); + service.apps.subscribe((apps: IApplication[]) => { + const updatedApps: IApplication[] = apps.filter((app: IApplication) => app.appId === application.appId); + if (updatedApps[0]) { + expect(updatedApps[0].showApp).toEqual(application.showApp); + } + }); + })); + + it('Should filter displayed apps', fakeAsync(() => { + service.init(); + tick(); + const application = initApps[0]; + service.filterDisplayedApps(application.title); + service.apps.subscribe((apps: IApplication[]) => { + apps.forEach((app: IApplication) => { + if (app.appId === application.appId) { + expect(app.showApp).toBeTruthy(); + } else { + expect(app.showApp).toBeFalsy(); + } + }); + }); + })); +}); diff --git a/toolbar-ui-angular/src/app/services/initialize.service.ts b/toolbar-ui-angular/src/app/services/initialize.service.ts new file mode 100644 index 0000000..9a2f3c5 --- /dev/null +++ b/toolbar-ui-angular/src/app/services/initialize.service.ts @@ -0,0 +1,204 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Injectable} from '@angular/core'; +import {BehaviorSubject} from 'rxjs/index'; + +import {IApplication, IProvider} from '../app'; + +import {HelperService} from './helper.service'; + +@Injectable() +export class InitializeService { + public providers: BehaviorSubject = new BehaviorSubject([]); + public apps: BehaviorSubject = new BehaviorSubject([]); + private internalProviders: IProvider[] = []; + private internalApps: IApplication[] = []; + + constructor(private helperService: HelperService) { + } + + public init(): void { + this.subscribeForFdc3LauncherToolbarProviders(); + this.subscribeForLogStream(); + } + + /** + * Update provider + * On toggle provider, the "enabled" and "status" props are updated + * @param providerName: provider.name + * @param isChecked: whether it is enabled or not + */ + public updateProviders(providerName: string, isChecked: boolean): void { + this.internalProviders = this.internalProviders.map((provider: IProvider) => { + if (provider.name === providerName) { + provider.enabled = isChecked; + provider.status = isChecked ? 'connecting' : 'disconnected'; + } + return provider; + }); + this.providers.next(this.internalProviders); + } + + /** + * Update apps + * @param updatedApp: app to be updated + * @param key: key by which it will be updated + */ + public updateApps(updatedApp: IApplication, key: string): void { + if (!updatedApp) { + return; + } + this.internalApps = this.internalApps.map((app: IApplication) => { + if (app.appId === updatedApp.appId) { + app[key] = updatedApp[key]; + } + return app; + }); + this.apps.next(this.internalApps); + this.updateLocalStorage(); + } + + /** + * Filter displayed apps by title + * @param filter: filter value + */ + public filterDisplayedApps(filter: string): void { + this.internalApps = this.internalApps.map((app: IApplication) => { + if (app.title.toLowerCase().indexOf(filter.toLowerCase()) < 0) { + app.showApp = false; + } else { + app.showApp = app.provider.enabled; + } + return app; + }); + this.apps.next(this.internalApps); + } + + /** + * Set apps + * Get apps from each provider and add the following props: + * provider - app provider + * iconPath - the path to the icon resource + * showApp - show apps only if the provider is enabled + * isFavourite - false by default, get favourites from local storage + * If the provider successfully gets the apps, its status is updated to "connected". If not, its status is updated to "disconnected" + */ + public setApps(): void { + const localStorageFavApps: string = window.localStorage.getItem('favApps'); + const favAppsIds: string[] = localStorageFavApps ? localStorageFavApps.split(',') : []; + const initialApps: IApplication[] = []; + this.internalProviders.forEach((provider: IProvider) => { + provider.getApps() + .then((apps: IApplication[]) => { + apps.forEach((app: IApplication) => { + const iconPath: string = this.getAppIconPath(app); + const application: IApplication = app; + app.provider = provider; + app.iconPath = iconPath; + app.showApp = provider.enabled; + app.isFavourite = favAppsIds.indexOf(app.appId) >= 0 && provider.enabled; + initialApps.push(application); + }); + provider.status = 'connected'; + this.internalApps = initialApps; + this.apps.next(this.internalApps); + }) + .catch(() => { + (window as any).logStream.next([`Unable to connect app directory "${provider.name}"`, 'ERROR', 'Toolbar']); + provider.status = 'disconnected'; + }); + }); + } + + /** + * Update local storage with the favourite apps + */ + private updateLocalStorage(): void { + const favAppIds: string[] = this.internalApps + .filter((app: IApplication) => app.isFavourite) + .map((app: IApplication) => app.appId); + window.localStorage.setItem('favApps', favAppIds.toString()); + } + + /** + * Subscribe for FDC3 Launcher Toolbar providers + * Add the following props: + * enabled - set to true by default + * status - set to 'connecting' by default + * Set apps after updating the providers + */ + private subscribeForFdc3LauncherToolbarProviders(): void { + (window as any).fdc3LauncherToolbar.providers.subscribe((providers: IProvider[]) => { + providers = providers.map((provider: IProvider) => { + this.addLogOnProviderAdded(provider); + provider.enabled = true; + provider.status = 'connecting'; + return provider; + }); + this.internalProviders = providers; + this.providers.next(this.internalProviders); + this.setApps(); + }); + } + + /** + * Add log on provider added + * @param provider: provider + */ + private addLogOnProviderAdded(provider: IProvider): void { + const logMessage: string = `Will add provider "${provider.name}" with URL ${provider.apiUrl}`; + this.helperService.addLog(Date.now(), 'INFO', 'Toolbar', logMessage); + } + + /** + * Get app icon path from resources + * @param app: app + * @returns string: path + */ + private getAppIconPath(app: IApplication): string { + const type: string = JSON.parse(app.manifest as string).type; + let iconPath: string; + switch (type) { + case 'host': + const hostType: string = JSON.parse(app.manifest as string).hostType; + iconPath = hostType === 'Glue42' ? 'glue42.png' : 'fdc3.png.ico'; + break; + case 'exe': + iconPath = 'exe.svg'; + break; + case 'browser': + iconPath = 'browser.svg'; + break; + default: + iconPath = 'default.svg'; + break; + } + return `./assets/icons/${iconPath}`; + } + + /** + * Subscribe for log stream + */ + private subscribeForLogStream(): void { + (window as any).logStream.subscribe((log: string[]) => { + if (log.length === 3) { + this.helperService.addLog(Date.now(), log[1].toUpperCase(), log[2], log[0]); + } + }); + } +} diff --git a/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.html b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.html new file mode 100644 index 0000000..9ac6bd9 --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.html @@ -0,0 +1,79 @@ + + + + + + diff --git a/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.spec.ts b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.spec.ts new file mode 100644 index 0000000..39e6bae --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.spec.ts @@ -0,0 +1,294 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {FormsModule} from '@angular/forms'; +import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; +import {ModalModule} from 'ngx-bootstrap'; +import {ElectronService} from 'ngx-electron'; + +import {AppDirectoryFormModalComponent} from './app-directory-form-modal.component'; +import {ModalDialogComponent} from '../../shared/modal-dialog/modal-dialog.component'; + +import {HelperService} from '../../services/helper.service'; +import {InitializeService} from '../../services/initialize.service'; + +import {IProvider, IFdc3LauncherToolbarProvider} from '../../app'; + +describe('App Directory Form Modal Component', () => { + let component: AppDirectoryFormModalComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + let helperService: HelperService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + FormsModule, + ModalModule.forRoot(), + NgbModule.forRoot() + ], + declarations: [ + AppDirectoryFormModalComponent, + ModalDialogComponent + ], + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AppDirectoryFormModalComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + helperService = TestBed.get(HelperService); + + spyOn(component.newAppDirectoryModalDialog, 'show'); + spyOn(component.newAppDirectoryModalDialog, 'hide'); + + fixture.detectChanges(); + }); + + it('Should validate app directory name', () => { + expect(component.isAppDirectoryNameValid).toBeTruthy(); + let appDirectoryName: string = 'test'; + component.name = appDirectoryName; + expect(component._name).toEqual(appDirectoryName); + expect(component.isAppDirectoryNameValid).toBeTruthy(); + + appDirectoryName = ''; + component.name = appDirectoryName; + expect(component._name).toEqual(appDirectoryName); + expect(component.isAppDirectoryNameValid).toBeFalsy(); + }); + + it('Should validate api url', () => { + expect(component.isApiURLValid).toBeTruthy(); + let apiUrl: string = 'http://localhost:9875'; + component.apiURL = apiUrl; + expect(component._apiURL).toEqual(apiUrl); + expect(component.isApiURLValid).toBeTruthy(); + + apiUrl = ''; + component.apiURL = apiUrl; + expect(component._apiURL).toEqual(apiUrl); + expect(component.isApiURLValid).toBeFalsy(); + + apiUrl = 'apiUrl'; + component.apiURL = apiUrl; + expect(component._apiURL).toEqual(apiUrl); + expect(component.isApiURLValid).toBeFalsy(); + }); + + it('Should validate auth url', () => { + expect(component.isAuthURLValid).toBeTruthy(); + let authUrl: string = 'http://localhost:9875'; + component.authURL = authUrl; + expect(component._authURL).toEqual(authUrl); + expect(component.isAuthURLValid).toBeTruthy(); + + authUrl = ''; + component.authURL = authUrl; + expect(component._authURL).toEqual(authUrl); + expect(component.isAuthURLValid).toBeTruthy(); + + authUrl = 'authUrl'; + component.authURL = authUrl; + expect(component._authURL).toEqual(authUrl); + expect(component.isAuthURLValid).toBeFalsy(); + }); + + it('Should validate email', () => { + expect(component.isEmailValid).toBeTruthy(); + let email: string = 'mail@mail.com'; + component.email = email; + expect(component._email).toEqual(email); + expect(component.isEmailValid).toBeTruthy(); + + email = ''; + component.email = email; + expect(component._email).toEqual(email); + expect(component.isEmailValid).toBeTruthy(); + + email = 'email'; + component.email = email; + expect(component._email).toEqual(email); + expect(component.isEmailValid).toBeFalsy(); + }); + + it('Should validate password', () => { + expect(component.isPasswordSet).toBeTruthy(); + component.email = ''; + let password: string = 'password'; + component.password = password; + expect(component._password).toEqual(password); + expect(component.isPasswordSet).toBeTruthy(); + + component.email = 'mail@mail.com'; + password = ''; + component.password = password; + expect(component._password).toEqual(password); + expect(component.isPasswordSet).toBeFalsy(); + + component.email = 'mail@mail.com'; + password = 'password'; + component.password = password; + expect(component._password).toEqual(password); + expect(component.isPasswordSet).toBeTruthy(); + }); + + it('Should toggle create and edit buttons on form change', () => { + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = false; + component.isApiURLValid = true; + component.isAuthURLValid = true; + component.isEmailValid = true; + component.isPasswordSet = true; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = true; + component.isApiURLValid = false; + component.isAuthURLValid = true; + component.isEmailValid = true; + component.isPasswordSet = true; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = true; + component.isApiURLValid = true; + component.isAuthURLValid = false; + component.isEmailValid = true; + component.isPasswordSet = true; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = true; + component.isApiURLValid = true; + component.isAuthURLValid = true; + component.isEmailValid = false; + component.isPasswordSet = true; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = true; + component.isApiURLValid = true; + component.isAuthURLValid = true; + component.isEmailValid = true; + component.isPasswordSet = false; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.enableEditBtn).toBeFalsy(); + + component.isAppDirectoryNameValid = true; + component.isApiURLValid = true; + component.isAuthURLValid = true; + component.isEmailValid = true; + component.isPasswordSet = true; + component.toggleButtons(); + expect(component.enableCreateBtn).toBeTruthy(); + expect(component.enableEditBtn).toBeTruthy(); + }); + + it('Should show new app directory modal dialog', () => { + helperService.showAppDirectoryModal.next({show: true, provider: null}); + helperService.showAppDirectoryModal.subscribe(() => { + expect(component.isAddAppDirectoryModalOpened).toBeTruthy(); + expect(component.newAppDirectoryModalDialogTitle).toEqual('Create New App Directory'); + expect(component._name).toEqual(''); + expect(component._apiURL).toEqual(''); + expect(component._authURL).toEqual(''); + expect(component._email).toEqual(''); + expect(component._password).toEqual(''); + expect(component.isAppDirectoryNameValid).toBeTruthy(); + expect(component.isApiURLValid).toBeTruthy(); + expect(component.enableCreateBtn).toBeFalsy(); + expect(component.newAppDirectoryModalDialog.show).toHaveBeenCalled(); + }); + }); + + it('Should show edit app directory modal dialog', fakeAsync(() => { + initializeService.init(); + tick(); + initializeService.providers.subscribe(() => { + const provider: IProvider = component.providers[0]; + helperService.showAppDirectoryModal.next({show: true, provider}); + helperService.showAppDirectoryModal.subscribe(() => { + expect(component.isAddAppDirectoryModalOpened).toBeFalsy(); + expect(component.editedProviderName).toEqual(provider.name); + expect(component.newAppDirectoryModalDialogTitle).toEqual('Edit App Directory'); + expect(component._name).toEqual(provider.name); + expect(component._apiURL).toEqual(provider.apiUrl); + expect(component._authURL).toEqual(provider.authUrl); + expect(component._email).toEqual(provider.email); + expect(component._password).toEqual(provider.password); + expect(component.isAppDirectoryNameValid).toBeTruthy(); + expect(component.isApiURLValid).toBeTruthy(); + expect(component.enableEditBtn).toBeTruthy(); + expect(component.newAppDirectoryModalDialog.show).toHaveBeenCalled(); + }); + }); + })); + + it('Should create app directory', () => { + spyOn((window as any).fdc3LauncherToolbar, 'addProvider'); + component.name = 'test'; + component.apiURL = 'http://localhost:9875'; + component.createAppDirectory(); + const providerData: IFdc3LauncherToolbarProvider = { + name: component.name, + apiUrl: component.apiURL, + authUrl: component.authURL, + email: component.email, + password: component.password + }; + expect((window as any).fdc3LauncherToolbar.addProvider).toHaveBeenCalledWith(providerData); + expect(component.newAppDirectoryModalDialog.hide).toHaveBeenCalled(); + }); + + it('Should edit app directory', fakeAsync(() => { + spyOn((window as any).fdc3LauncherToolbar, 'updateProvider'); + component.name = 'test'; + component.apiURL = 'http://localhost:9875'; + initializeService.init(); + tick(); + initializeService.providers.subscribe(() => { + const editedProvider: IProvider = component.providers[0]; + component.editedProviderName = editedProvider.name; + const providerData: IFdc3LauncherToolbarProvider = { + name: component.name, + apiUrl: component.apiURL, + authUrl: component.authURL, + email: component.email, + password: component.password + }; + component.editAppDirectory(); + expect((window as any).fdc3LauncherToolbar.updateProvider).toHaveBeenCalledWith(editedProvider, providerData); + expect(component.newAppDirectoryModalDialog.hide).toHaveBeenCalled(); + }); + })); +}); diff --git a/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.ts b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.ts new file mode 100644 index 0000000..53ed805 --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/app-directory-form-modal/app-directory-form-modal.component.ts @@ -0,0 +1,254 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; +import {Subscription} from 'rxjs/index'; + +import {ModalDialogComponent} from '../../shared/modal-dialog/modal-dialog.component'; + +import {HelperService} from '../../services/helper.service'; +import {InitializeService} from '../../services/initialize.service'; + +import {IProvider, IFdc3LauncherToolbarProvider} from '../../app'; + +@Component({ + selector: 'app-directory-form-modal', + templateUrl: './app-directory-form-modal.component.html' +}) +export class AppDirectoryFormModalComponent implements OnInit, OnDestroy { + @ViewChild('newAppDirectoryModalDialog') newAppDirectoryModalDialog: ModalDialogComponent; + public newAppDirectoryModalDialogTitle: string; + public isAddAppDirectoryModalOpened: boolean; + public providers: IProvider[] = []; + public isAppDirectoryNameValid: boolean = true; + public isApiURLValid: boolean = true; + public isAuthURLValid: boolean = true; + public isEmailValid: boolean = true; + public isPasswordSet: boolean = true; + public apiURLInvalidFeedback: string; + public enableCreateBtn: boolean = false; + public enableEditBtn: boolean = false; + public editedProviderName: string; + + public _name: string; + get name(): string { + return this._name; + } + /** + * Set app directory name + * Validate and toggle "Create" and "Edit" buttons + * @param value: input value + */ + set name(value: string) { + this._name = value; + this.isAppDirectoryNameValid = this._name !== ''; + this.toggleButtons(); + } + + public _apiURL: string; + get apiURL(): string { + return this._apiURL; + } + /** + * Set API URL + * Validate and toggle "Create" and "Edit" buttons + * @param value: input value + */ + set apiURL(value: string) { + this._apiURL = value; + if (this._apiURL === '') { + this.isApiURLValid = false; + this.apiURLInvalidFeedback = 'API URL is required'; + } else if (this._apiURL.indexOf('http://') !== 0 && this._apiURL.indexOf('https://') !== 0) { + this.isApiURLValid = false; + this.apiURLInvalidFeedback = 'API URL is not valid'; + } else { + this.isApiURLValid = true; + } + this.toggleButtons(); + } + + public _authURL: string; + get authURL(): string { + return this._authURL; + } + /** + * Set auth URL + * Validate and toggle "Create" and "Edit" buttons + * @param value: input value + */ + set authURL(value: string) { + this._authURL = value; + this.isAuthURLValid = !value || (this._authURL.indexOf('http://') === 0 || this._authURL.indexOf('https://') === 0); + this.toggleButtons(); + } + + public _email: string; + get email(): string { + return this._email; + } + /** + * Set email + * Validate and toggle "Create" and "Edit" buttons + * @param value: input value + */ + set email(value: string) { + this._email = value; + this.isEmailValid = !this._email || /\S+@\S+\.\S+/.test(this._email); + this.isPasswordSet = !this._email || (this._email && this._password !== ''); + this.toggleButtons(); + } + + public _password: string; + get password(): string { + return this._password; + } + /** + * Set password + * Validate and toggle "Create" and "Edit" buttons + * @param value: input value + */ + set password(value: string) { + this._password = value; + this.isPasswordSet = !this._email || this._email && value !== ''; + this.toggleButtons(); + } + + private subscriptions: Subscription[] = []; + + constructor(private helperService: HelperService, + private initializeService: InitializeService) { + } + + ngOnInit() { + this.subscribeForProviders(); + this.subscribeForShowAppDirectoryModal(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Create app directory + */ + public createAppDirectory(): void { + (window as any).logStream.next([`Created new app provider "${this._name}"`, 'INFO', 'Angular']); + const providerData: IFdc3LauncherToolbarProvider = { + name: this._name, + apiUrl: this._apiURL, + authUrl: this._authURL, + email: this._email, + password: this._password + }; + (window as any).fdc3LauncherToolbar.addProvider(providerData); + this.newAppDirectoryModalDialog.hide(); + } + + /** + * Edit app directory + */ + public editAppDirectory(): void { + (window as any).logStream.next([`Edited app directory "${this._name}"`, 'INFO', 'Angular']); + const providerData: IFdc3LauncherToolbarProvider = { + name: this._name, + apiUrl: this._apiURL, + authUrl: this._authURL, + email: this._email, + password: this._password + }; + const editedProvider: IProvider = this.providers + .filter((provider: IProvider) => provider.name === this.editedProviderName)[0]; + (window as any).fdc3LauncherToolbar.updateProvider(editedProvider, providerData); + this.newAppDirectoryModalDialog.hide(); + } + + /** + * Toggle "Create" and "Edit" buttons + */ + public toggleButtons(): void { + this.enableCreateBtn = this.isAppDirectoryNameValid && this.isApiURLValid && this.isAuthURLValid && + this.isEmailValid && this.isPasswordSet; + this.enableEditBtn = this.enableCreateBtn; + } + + /** + * Subscribe for providers + */ + private subscribeForProviders(): void { + this.subscriptions.push(this.initializeService.providers.subscribe((providers: IProvider[]) => { + this.providers = providers; + })); + } + + /** + * Subscribe for show app directory modal dialog + * Set all fields as valid before opening the modal dialog + */ + private subscribeForShowAppDirectoryModal(): void { + this.subscriptions.push(this.helperService.showAppDirectoryModal + .subscribe((args: {show: boolean, provider?: IProvider}) => { + this.isAppDirectoryNameValid = true; + this.isApiURLValid = true; + this.isAuthURLValid = true; + this.isEmailValid = true; + this.isPasswordSet = true; + if (args.provider) { + this.showEditAppDirectoryModalDialog(args.provider); + } else { + this.showNewAppDirectoryModalDialog(); + } + }) + ); + } + + /** + * Show new app directory modal dialog + */ + private showNewAppDirectoryModalDialog(): void { + this.isAddAppDirectoryModalOpened = true; + this.newAppDirectoryModalDialogTitle = 'Create New App Directory'; + this._name = ''; + this._apiURL = ''; + this._authURL = ''; + this._email = ''; + this._password = ''; + this.isAppDirectoryNameValid = true; + this.isApiURLValid = true; + this.enableCreateBtn = false; + this.newAppDirectoryModalDialog.show(); + } + + /** + * Show edit app directory modal dialog + * @param provider: provider + */ + private showEditAppDirectoryModalDialog(provider: IProvider): void { + this.isAddAppDirectoryModalOpened = false; + this.editedProviderName = provider.name; + this.newAppDirectoryModalDialogTitle = 'Edit App Directory'; + this._name = provider.name; + this._apiURL = provider.apiUrl; + this._authURL = provider.authUrl; + this._email = provider.email; + this._password = provider.password; + this.isAppDirectoryNameValid = true; + this.isApiURLValid = true; + this.enableEditBtn = true; + this.newAppDirectoryModalDialog.show(); + } +} diff --git a/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.html b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.html new file mode 100644 index 0000000..9e21b87 --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.html @@ -0,0 +1,84 @@ + + +
+
+
+
+
+
+ + +
+
+ + +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ [{{log.date}}] {{log.type}} | + {{log.origin}} | + {{log.message}} +
+
+
+
+
There are no logs available
\ No newline at end of file diff --git a/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.spec.ts b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.spec.ts new file mode 100644 index 0000000..c57ba2e --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.spec.ts @@ -0,0 +1,145 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; + +import {SettingsLogsComponent} from './settings-logs.component'; + +import {ElectronService} from 'ngx-electron'; +import {HelperService} from '../../services/helper.service'; + +import {ILog} from '../../app'; + +const initialLogs: ILog[] = require('../../../mock-data/logs.json'); + +describe('Settings Logs Component', () => { + let component: SettingsLogsComponent; + let fixture: ComponentFixture; + let helperService: HelperService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + SettingsLogsComponent + ], + providers: [ + ElectronService, + HelperService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SettingsLogsComponent); + component = fixture.componentInstance; + helperService = TestBed.get(HelperService); + fixture.detectChanges(); + }); + + it('Should toggle sorting', () => { + helperService.logs.next(initialLogs); + helperService.logs.subscribe((logs: ILog[]) => { + component.toggleSorting(); + expect(component.logs[0].origin).toEqual('Angular'); + component.toggleSorting(); + expect(component.logs[0].origin).toEqual('Electron'); + }); + }); + + it('Should hide type options on origin filter checked', () => { + const event = {target: {value: 'origin'}}; + component.onFilterByChange(event); + expect(component.showFilterByOriginOptions).toBeTruthy(); + expect(component.showFilterByTypeOptions).toBeFalsy(); + }); + + it('Should hide origin options on type filter checked', () => { + const event = {target: {value: 'type'}}; + component.onFilterByChange(event); + expect(component.showFilterByOriginOptions).toBeFalsy(); + expect(component.showFilterByTypeOptions).toBeTruthy(); + }); + + it('Should filter logs by origin', () => { + const filterValue: string = 'electron'; + helperService.logs.next(initialLogs); + helperService.logs.subscribe(() => { + component.showFilterByOriginOptions = true; + const event = {target: {checked: true, value: filterValue}}; + component.filterLogs(event); + + component.logs.forEach((log: ILog) => { + if (log.origin.toLowerCase() === filterValue) { + expect(log.show).toBeTruthy(); + } else { + expect(log.show).toBeFalsy(); + } + }); + }); + }); + + it('Should filter logs by type', () => { + const filterValue: string = 'info'; + helperService.logs.next(initialLogs); + helperService.logs.subscribe(() => { + component.showFilterByTypeOptions = true; + const event = {target: {checked: true, value: filterValue}}; + component.filterLogs(event); + + component.logs.forEach((log: ILog) => { + if (log.type.toLowerCase() === filterValue) { + expect(log.show).toBeTruthy(); + } else { + expect(log.show).toBeFalsy(); + } + }); + }); + }); + + it('Should clear origin filters', () => { + const filterValue: string = 'electron'; + helperService.logs.next(initialLogs); + helperService.logs.subscribe(() => { + component.showFilterByOriginOptions = true; + const event = {target: {checked: true, value: filterValue}}; + component.filterLogs(event); + + const clearEvent = {target: {checked: false, value: filterValue}}; + component.filterLogs(clearEvent); + component.logs.forEach((log: ILog) => { + expect(log.show).toBeTruthy(); + }); + }); + }); + + it('Should clear type filters', () => { + const filterValue: string = 'info'; + helperService.logs.next(initialLogs); + helperService.logs.subscribe(() => { + component.showFilterByTypeOptions = true; + const event = {target: {checked: true, value: filterValue}}; + component.filterLogs(event); + + const clearEvent = {target: {checked: false, value: filterValue}}; + component.filterLogs(clearEvent); + component.logs.forEach((log: ILog) => { + expect(log.show).toBeTruthy(); + }); + }); + }); +}); diff --git a/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.ts b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.ts new file mode 100644 index 0000000..0cd1f5e --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/logs/settings-logs.component.ts @@ -0,0 +1,216 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, Input, NgZone, OnDestroy, OnInit} from '@angular/core'; +import {Subscription} from 'rxjs/index'; +import {saveAs} from 'file-saver'; +import {ElectronService} from 'ngx-electron'; + +import {ILog} from '../../app'; + +import {HelperService} from '../../services/helper.service'; + +@Component({ + selector: 'app-settings-logs', + templateUrl: './settings-logs.component.html' +}) +export class SettingsLogsComponent implements OnInit, OnDestroy { + @Input() openNewWindow: boolean; + @Input() logs: ILog[] = [] = []; + public displayedLogs: ILog[]; + public showFilterByOriginOptions: boolean = false; + public showFilterByTypeOptions: boolean = false; + private sortAsc: boolean = true; + private logOriginFilters: string[] = []; + private logTypeFilters: string[] = []; + private subscriptions: Subscription[] = []; + + constructor(private electronService: ElectronService, + private zone: NgZone, + private helperService: HelperService) { + } + + public ngOnInit() { + this.subscribeForLogs(); + this.subscribeForClearLogsFilters(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Toggle logs sorting by timestamp + */ + public toggleSorting(): void { + this.sortAsc = !this.sortAsc; + this.logs = this.logs.sort((a: ILog, b: ILog) => { + return this.sortAsc ? a.timestamp - b.timestamp : b.timestamp - a.timestamp; + }); + this.setDisplayedLogs(); + } + + /** + * On change of filter by fields + * Toggles the displayed filters + * @param event: click event + */ + public onFilterByChange(event: any): void { + this.showFilterByOriginOptions = event.target.value === 'origin'; + this.showFilterByTypeOptions = event.target.value === 'type'; + this.filterDisplayedLogs([], ''); + } + + /** + * Filter logs + * @param event: click event + */ + public filterLogs(event: any): void { + this.setFilterValues(event); + if (this.showFilterByOriginOptions) { + this.filterDisplayedLogs(this.logOriginFilters, 'origin'); + } else if (this.showFilterByTypeOptions) { + this.filterDisplayedLogs(this.logTypeFilters, 'type'); + } + } + + /** + * Extract logs + * Downloads all logs as .csv file + */ + public extractLogs(): void { + const logs: string = this.logs.map((log: ILog) => { + const time: string = `${this.getDate(log.timestamp)}_${this.getTime(log.timestamp)}`; + return `${time},${log.type},${log.origin},${log.message}`; + }).join('\r\n'); + const blob = new Blob([logs], {type: 'text/csv'}); + saveAs(blob, `${this.getDate(Date.now())}_${this.getTime(Date.now())}.csv`); + } + + /** + * Open logs in new Electron window + */ + public openInNewWindow(): void { + const preload: string = this.electronService.ipcRenderer.sendSync('get-preload-path'); + const win = new this.electronService.remote.BrowserWindow({width: 900, height: 600, webPreferences: {preload}}); + win.loadURL(`${location.href.split('/').slice(0, -2).join('/')}/assets/logs.html`); + } + + /** + * Set filter values + * @param event: click event + */ + private setFilterValues(event: any): void { + if (event.target.checked) { + if (this.showFilterByOriginOptions) { + this.logOriginFilters.push(event.target.value); + } else if (this.showFilterByTypeOptions) { + this.logTypeFilters.push(event.target.value); + } + } else { + if (this.showFilterByOriginOptions) { + this.logOriginFilters = this.logOriginFilters + .filter((originFilter: string) => originFilter !== event.target.value); + } else if (this.showFilterByTypeOptions) { + this.logTypeFilters = this.logTypeFilters + .filter((originFilter: string) => originFilter !== event.target.value); + } + } + } + + /** + * Filter displayed logs + * @param filterValues: list of filter values + * @param filterByKey: key used to filter the logs + */ + private filterDisplayedLogs(filterValues: string[], filterByKey: string): void { + this.logs = this.logs.map((log: ILog) => { + if (filterValues.length > 0) { + log.show = filterValues.indexOf(log[filterByKey].toLowerCase()) >= 0; + } else { + log.show = true; + } + return log; + }); + this.setDisplayedLogs(); + } + + /** + * Set displayed logs + */ + private setDisplayedLogs(): void { + this.zone.run(() => { + this.displayedLogs = this.logs.map((log: ILog) => ({ + date: this.getTime(log.timestamp), + timestamp: log.timestamp, + type: log.type, + origin: log.origin, + message: log.message, + show: log.show + })); + }); + } + + /** + * Get date in format DD.MM.YYYY + * @param timestamp: timestamp + * @returns string: date in format DD.MM.YYYY + */ + private getDate(timestamp: number): string { + const date = new Date(timestamp); + const day: string = date.getDate() < 10 ? `0${date.getDate()}` : `${date.getDate()}`; + const month: string = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : `${date.getMonth() + 1}`; + const year: string = `${date.getFullYear()}`; + return `${day}.${month}.${year}`; + } + + /** + * Get time in format HH:MM:SS + * @param timestamp: timestamp + * @returns string: time in format HH:MM:SS + */ + private getTime(timestamp: number): string { + const date = new Date(timestamp); + const hours: string = date.getHours() < 10 ? `0${date.getHours()}` : `${date.getHours()}`; + const minutes: string = date.getMinutes() < 10 ? `0${date.getMinutes()}` : `${date.getMinutes()}`; + const seconds: string = date.getSeconds() < 10 ? `0${date.getSeconds()}` : `${date.getSeconds()}`; + return `${hours}:${minutes}:${seconds}`; + } + + /** + * Subscribe for logs + */ + private subscribeForLogs(): void { + this.subscriptions.push(this.helperService.logs.subscribe((logs: ILog[]) => { + this.logs = logs; + this.setDisplayedLogs(); + })); + } + + /** + * Subscribe for clear logs filters + */ + private subscribeForClearLogsFilters(): void { + this.subscriptions.push(this.helperService.clearLogsFilters.subscribe((clearFilters: boolean) => { + if (clearFilters) { + this.showFilterByOriginOptions = false; + this.showFilterByTypeOptions = false; + this.filterDisplayedLogs([], ''); + } + })); + } +} diff --git a/toolbar-ui-angular/src/app/settings/settings.component.html b/toolbar-ui-angular/src/app/settings/settings.component.html new file mode 100644 index 0000000..011d23e --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/settings.component.html @@ -0,0 +1,85 @@ + + +
+
+ + +
+
+ There are no App Directories defined +
+
+ +
+ + +
+ + + +
+
+
+
+ +
+
+
+ + + +
+
+
+ + + + + + + + + diff --git a/toolbar-ui-angular/src/app/settings/settings.component.spec.ts b/toolbar-ui-angular/src/app/settings/settings.component.spec.ts new file mode 100644 index 0000000..e602b15 --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/settings.component.spec.ts @@ -0,0 +1,120 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {AccordionModule, ModalModule} from 'ngx-bootstrap'; +import {ClipboardModule} from 'ngx-clipboard'; +import {ElectronService} from 'ngx-electron'; +import {FormsModule} from '@angular/forms'; +import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; + +import {SettingsComponent} from './settings.component'; +import {SettingsLogsComponent} from './logs/settings-logs.component'; +import {AppDirectoryFormModalComponent} from './app-directory-form-modal/app-directory-form-modal.component'; +import {ModalDialogComponent} from '../shared/modal-dialog/modal-dialog.component'; + +import {HelperService} from '../services/helper.service'; +import {InitializeService} from '../services/initialize.service'; + +describe('Settings Component', () => { + let component: SettingsComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + let helperService: HelperService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + AccordionModule.forRoot(), + ClipboardModule, + FormsModule, + ModalModule.forRoot(), + NgbModule.forRoot() + ], + declarations: [ + SettingsComponent, + SettingsLogsComponent, + AppDirectoryFormModalComponent, + ModalDialogComponent + ], + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SettingsComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + helperService = TestBed.get(HelperService); + + spyOn(component.providerJSONConfigModalDialog, 'show'); + spyOn(component.deleteProviderModalDialog, 'show'); + spyOn(component.deleteProviderModalDialog, 'hide'); + + fixture.detectChanges(); + }); + + it('Should toggle provider', fakeAsync(() => { + spyOn(initializeService, 'updateProviders'); + spyOn(initializeService, 'setApps'); + initializeService.init(); + tick(); + initializeService.providers.subscribe(() => { + const provider = component.providers[0]; + const event = {target: {checked: false}}; + component.toggleProvider(event, provider.name); + expect(initializeService.updateProviders).toHaveBeenCalledWith(provider.name, event.target.checked); + expect(initializeService.setApps).toHaveBeenCalled(); + }); + })); + + it('Should show provider json config modal dialog', fakeAsync(() => { + initializeService.init(); + tick(); + initializeService.providers.subscribe(() => { + const provider = component.providers[0]; + component.showProviderJSONConfigModal(provider); + expect(component.currentProvider).toEqual(provider); + expect(component.providerJSONConfigTitle).toEqual(`"${provider.name}" JSON Config`); + expect(component.providerJSONConfig).toEqual(JSON.stringify(provider, null, 2)); + expect(component.providerJSONConfigModalDialog.show).toHaveBeenCalled(); + }); + })); + + it('Should show delete provider modal dialog', fakeAsync(() => { + initializeService.init(); + tick(); + initializeService.providers.subscribe(() => { + const provider = component.providers[0]; + component.showDeleteAppDirectoryModal(provider); + expect(component.currentProvider).toEqual(provider); + expect(component.deleteProviderModalDialog.show).toHaveBeenCalled(); + }); + })); + + it('Should delete provider', () => { + spyOn((window as any).fdc3LauncherToolbar, 'deleteProvider'); + component.deleteProvider(); + expect((window as any).fdc3LauncherToolbar.deleteProvider).toHaveBeenCalled(); + expect(component.deleteProviderModalDialog.hide).toHaveBeenCalled(); + }); +}); diff --git a/toolbar-ui-angular/src/app/settings/settings.component.ts b/toolbar-ui-angular/src/app/settings/settings.component.ts new file mode 100644 index 0000000..fb8f6f9 --- /dev/null +++ b/toolbar-ui-angular/src/app/settings/settings.component.ts @@ -0,0 +1,160 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, OnDestroy, OnInit, ViewChild} from '@angular/core'; +import {Subscription} from 'rxjs/index'; +import {ElectronService} from 'ngx-electron'; + +import {HelperService} from '../services/helper.service'; +import {InitializeService} from '../services/initialize.service'; + +import {ModalDialogComponent} from '../shared/modal-dialog/modal-dialog.component'; + +import {IApplication, ILog, IProvider} from '../app'; + +@Component({ + selector: 'app-settings', + templateUrl: './settings.component.html' +}) +export class SettingsComponent implements OnInit, OnDestroy { + @ViewChild('providerJSONConfigModalDialog') providerJSONConfigModalDialog: ModalDialogComponent; + @ViewChild('deleteProviderModalDialog') deleteProviderModalDialog: ModalDialogComponent; + public showSettings: boolean; + public providers: IProvider[] = []; + public apps: IApplication[] = []; + public logs: ILog[] = []; + public currentProvider: IProvider; + public providerJSONConfigTitle: string; + public providerJSONConfig: string; + private subscriptions: Subscription[] = []; + + constructor(private electronService: ElectronService, + private helperService: HelperService, + private initializeService: InitializeService) { + } + + public ngOnInit() { + this.subscribeForShowSettings(); + this.subscribeForProviders(); + this.subscribeForApps(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Toggle providers + * Show apps only for enabled providers + * @param ev: event whether the toggle button was checked or not + * @param providerName: provider.name + */ + public toggleProvider(ev: any, providerName: string): void { + this.initializeService.updateProviders(providerName, ev.target.checked); + this.initializeService.setApps(); + } + + /** + * Show provider json config modal dialog + * @param provider: provider + */ + public showProviderJSONConfigModal(provider: IProvider): void { + this.currentProvider = provider; + this.providerJSONConfigTitle = `"${provider.name}" JSON Config`; + this.providerJSONConfig = JSON.stringify(provider, null, 2); + this.providerJSONConfigModalDialog.show(); + (window as any).logStream.next([`Show JSON config for provider "${provider.name}"`, 'INFO', 'Angular']); + } + + /** + * Show modal dialog for adding new app directory + */ + public showNewAppDirectoryModalDialog(): void { + this.helperService.showAppDirectoryModal.next({show: true, provider: null}); + } + + /** + * Show modal dialog for editing app directory + * @param provider: provider + */ + public showEditAppDirectory(provider: IProvider): void { + this.helperService.showAppDirectoryModal.next({show: true, provider}); + } + + /** + * Show delete app directory modal dialog + * @param provider: provider + */ + public showDeleteAppDirectoryModal(provider: IProvider): void { + this.currentProvider = provider; + this.deleteProviderModalDialog.show(); + } + + /** + * Delete provider + */ + public deleteProvider(): void { + (window as any).fdc3LauncherToolbar.deleteProvider(this.currentProvider); + this.deleteProviderModalDialog.hide(); + } + + /** + * Open provider config in new electron window + */ + public openInNewWindow(): void { + const preload: string = this.electronService.ipcRenderer.sendSync('get-preload-path'); + const win = new this.electronService.remote.BrowserWindow({ + width: 700, + height: 300, + webPreferences: {preload}, + autoHideMenuBar: true + }); + const dirName: string = location.href.split('/').slice(0, -2).join('/'); + win.loadURL(`${dirName}/assets/provider-config.html#${this.currentProvider.name.split(' ').join('_')}`); + } + + /** + * Subscribe for show settings + * Show settings is initially set to false + */ + private subscribeForShowSettings(): void { + this.subscriptions.push(this.helperService.showSettings.subscribe((showSettings: boolean) => { + this.showSettings = showSettings; + if (!showSettings) { + this.helperService.clearLogsFilters.next(true); + } + })); + } + + /** + * Subscribe for providers + */ + private subscribeForProviders(): void { + this.subscriptions.push(this.initializeService.providers.subscribe((providers: IProvider[]) => { + this.providers = providers; + })); + } + + /** + * Subscribe for apps + */ + private subscribeForApps(): void { + this.subscriptions.push(this.initializeService.apps.subscribe((apps: IApplication[]) => { + this.apps = apps; + })); + } +} diff --git a/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.html b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.html new file mode 100644 index 0000000..cc12f9e --- /dev/null +++ b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.html @@ -0,0 +1,27 @@ + + + diff --git a/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.spec.ts b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.spec.ts new file mode 100644 index 0000000..df0f0e6 --- /dev/null +++ b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.spec.ts @@ -0,0 +1,56 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {ModalModule} from 'ngx-bootstrap'; + +import {ModalDialogComponent} from './modal-dialog.component'; + +describe('Modal Dialog Component', () => { + let component: ModalDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + ModalModule.forRoot() + ], + declarations: [ + ModalDialogComponent + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ModalDialogComponent); + component = fixture.componentInstance; + spyOn(component.modalDialog, 'show'); + spyOn(component.modalDialog, 'hide'); + fixture.detectChanges(); + }); + + it('Should show modal dialog', () => { + component.show(); + expect(component.modalDialog.show).toHaveBeenCalled(); + }); + + it('Should hide modal dialog', () => { + component.hide(); + expect(component.modalDialog.hide).toHaveBeenCalled(); + }); +}); diff --git a/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.ts b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.ts new file mode 100644 index 0000000..96efcc6 --- /dev/null +++ b/toolbar-ui-angular/src/app/shared/modal-dialog/modal-dialog.component.ts @@ -0,0 +1,42 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, Input, ViewChild} from '@angular/core'; +import {ModalDirective} from 'ngx-bootstrap'; + +@Component({ + selector: 'app-modal-dialog', + templateUrl: './modal-dialog.component.html' +}) +export class ModalDialogComponent { + @ViewChild('modalDialog') public modalDialog: ModalDirective; + @Input() title: string; + + /** + * Show modal dialog + */ + public show() { + this.modalDialog.show(); + } + + /** + * Hide modal dialog + */ + public hide() { + this.modalDialog.hide(); + } +} diff --git a/toolbar-ui-angular/src/app/toolbar/toolbar.component.html b/toolbar-ui-angular/src/app/toolbar/toolbar.component.html new file mode 100644 index 0000000..238db65 --- /dev/null +++ b/toolbar-ui-angular/src/app/toolbar/toolbar.component.html @@ -0,0 +1,28 @@ + + + + + diff --git a/toolbar-ui-angular/src/app/toolbar/toolbar.component.spec.ts b/toolbar-ui-angular/src/app/toolbar/toolbar.component.spec.ts new file mode 100644 index 0000000..3904cf2 --- /dev/null +++ b/toolbar-ui-angular/src/app/toolbar/toolbar.component.spec.ts @@ -0,0 +1,109 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; +import {of} from 'rxjs/index'; +import {NgbModule} from '@ng-bootstrap/ng-bootstrap'; +import {FormsModule} from '@angular/forms'; +import {AccordionModule, ModalModule} from 'ngx-bootstrap'; +import {ClipboardModule} from 'ngx-clipboard'; +import {ElectronService} from 'ngx-electron'; + +import {ToolbarComponent} from './toolbar.component'; +import {ListOfAppsComponent} from '../list-of-apps/list-of-apps.component'; +import {SettingsComponent} from '../settings/settings.component'; +import {SettingsLogsComponent} from '../settings/logs/settings-logs.component'; +import {ModalDialogComponent} from '../shared/modal-dialog/modal-dialog.component'; +import {AppDirectoryFormModalComponent} from '../settings/app-directory-form-modal/app-directory-form-modal.component'; + +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {IApplication} from '../app'; + +describe('Toolbar Component', () => { + let component: ToolbarComponent; + let fixture: ComponentFixture; + let initializeService: InitializeService; + let helperService: HelperService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + AccordionModule.forRoot(), + ClipboardModule, + FormsModule, + ModalModule.forRoot(), + NgbModule.forRoot() + ], + declarations: [ + ListOfAppsComponent, + ModalDialogComponent, + SettingsComponent, + SettingsLogsComponent, + AppDirectoryFormModalComponent, + ToolbarComponent + ], + providers: [ + ElectronService, + HelperService, + InitializeService + ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ToolbarComponent); + component = fixture.componentInstance; + initializeService = TestBed.get(InitializeService); + helperService = TestBed.get(HelperService); + + spyOn(component, 'setWindowHeight').and.callFake(() => {}); + + fixture.detectChanges(); + }); + + it('Should toggle view', () => { + expect(component.showContent).toBeFalsy(); + expect(component.showSettings).toBeFalsy(); + + component.toggleView(); + expect(component.showContent).toBeTruthy(); + expect(component.showSettings).toBeFalsy(); + expect(component.setWindowHeight).toHaveBeenCalled(); + + component.toggleView(); + expect(component.showContent).toBeFalsy(); + expect(component.showSettings).toBeFalsy(); + expect(component.setWindowHeight).toHaveBeenCalled(); + }); + + it('Should toggle settings', () => { + expect(component.showSettings).toBeFalsy(); + expect(component.showContent).toBeFalsy(); + + component.toggleSettings(); + expect(component.showSettings).toBeTruthy(); + expect(component.showContent).toBeTruthy(); + expect(component.setWindowHeight).toHaveBeenCalled(); + + component.toggleSettings(); + expect(component.showContent).toBeTruthy(); + expect(component.showSettings).toBeFalsy(); + }); +}); diff --git a/toolbar-ui-angular/src/app/toolbar/toolbar.component.ts b/toolbar-ui-angular/src/app/toolbar/toolbar.component.ts new file mode 100644 index 0000000..96cfa1c --- /dev/null +++ b/toolbar-ui-angular/src/app/toolbar/toolbar.component.ts @@ -0,0 +1,106 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Subscription} from 'rxjs/index'; +import {ElectronService} from 'ngx-electron'; + +import {InitializeService} from '../services/initialize.service'; +import {HelperService} from '../services/helper.service'; + +import {IApplication} from '../app'; + +@Component({ + selector: 'app-toolbar', + templateUrl: './toolbar.component.html' +}) +export class ToolbarComponent implements OnInit, OnDestroy { + public favouriteApps: IApplication[] = []; + public showContent: boolean = false; + public showSettings: boolean = false; + private subscriptions: Subscription[] = []; + private minHeight: number = 100; + private maxHeight: number = 900; + + constructor(private initializeService: InitializeService, + private electronService: ElectronService, + private helperService: HelperService) { + } + + public ngOnInit() { + this.subscribeForApps(); + } + + public ngOnDestroy(): void { + this.subscriptions.forEach((subscription: Subscription) => subscription.unsubscribe()); + } + + /** + * Toggle view + * Toggle the window height to see only the navbar or show the whole content + */ + public toggleView(): void { + this.showContent = !this.showContent; + this.helperService.showContent.next(this.showContent); + this.showSettings = false; + this.helperService.showSettings.next(this.showSettings); + const height: number = this.showContent ? this.maxHeight : this.minHeight; + this.setWindowHeight(height); + } + + /** + * Toggle settings + * If the content is not visible, it will expand the window height and show the settings + */ + public toggleSettings(): void { + this.showSettings = !this.showSettings; + this.helperService.showSettings.next(this.showSettings); + if (!this.showContent) { + this.showContent = !this.showContent; + this.helperService.showContent.next(this.showContent); + this.setWindowHeight(this.maxHeight); + } + } + + /** + * Start App + * @param ap p: app + */ + public startApp(app: IApplication): void { + app.start(); + } + + /** + * Set window height + * @param height: window height + */ + public setWindowHeight(height: number): void { + const myWindow: any = this.electronService.remote.getCurrentWindow(); + const {width, x, y} = myWindow.getBounds(); + myWindow.setBounds({width, height, x, y}); + } + + /** + * Subscribe for apps + * Filter only the favourite ones + */ + private subscribeForApps(): void { + this.subscriptions.push(this.initializeService.apps.subscribe((apps: IApplication[]) => { + this.favouriteApps = apps.filter((app: IApplication) => app.isFavourite); + })); + } +} diff --git a/toolbar-ui-angular/src/assets/app-config.html b/toolbar-ui-angular/src/assets/app-config.html new file mode 100644 index 0000000..fffcd6c --- /dev/null +++ b/toolbar-ui-angular/src/assets/app-config.html @@ -0,0 +1,66 @@ + + + + + + + FDC3 Demo Toolbar application config + + + + + +
+

JSON Config

+
+ The application JSON config was not found +
+

+  
+ + diff --git a/toolbar-ui-angular/src/assets/icons/browser.svg b/toolbar-ui-angular/src/assets/icons/browser.svg new file mode 100644 index 0000000..cae0c48 --- /dev/null +++ b/toolbar-ui-angular/src/assets/icons/browser.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/toolbar-ui-angular/src/assets/icons/default.svg b/toolbar-ui-angular/src/assets/icons/default.svg new file mode 100644 index 0000000..8590120 --- /dev/null +++ b/toolbar-ui-angular/src/assets/icons/default.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/toolbar-ui-angular/src/assets/icons/exe.svg b/toolbar-ui-angular/src/assets/icons/exe.svg new file mode 100644 index 0000000..afac30a --- /dev/null +++ b/toolbar-ui-angular/src/assets/icons/exe.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/toolbar-ui-angular/src/assets/icons/fdc3.png.icns b/toolbar-ui-angular/src/assets/icons/fdc3.png.icns new file mode 100644 index 0000000..5643ebb Binary files /dev/null and b/toolbar-ui-angular/src/assets/icons/fdc3.png.icns differ diff --git a/toolbar-ui-angular/src/assets/icons/fdc3.png.ico b/toolbar-ui-angular/src/assets/icons/fdc3.png.ico new file mode 100644 index 0000000..9b1e372 Binary files /dev/null and b/toolbar-ui-angular/src/assets/icons/fdc3.png.ico differ diff --git a/toolbar-ui-angular/src/assets/icons/glue42.png b/toolbar-ui-angular/src/assets/icons/glue42.png new file mode 100644 index 0000000..ccf9f47 Binary files /dev/null and b/toolbar-ui-angular/src/assets/icons/glue42.png differ diff --git a/toolbar-ui-angular/src/assets/logs.html b/toolbar-ui-angular/src/assets/logs.html new file mode 100644 index 0000000..c177f77 --- /dev/null +++ b/toolbar-ui-angular/src/assets/logs.html @@ -0,0 +1,109 @@ + + + + + + + FDC3 Demo Toolbar demo logs + + + + + +
+

Logs

+
There are no logs available
+
+
+ + diff --git a/toolbar-ui-angular/src/assets/provider-config.html b/toolbar-ui-angular/src/assets/provider-config.html new file mode 100644 index 0000000..cc4fe45 --- /dev/null +++ b/toolbar-ui-angular/src/assets/provider-config.html @@ -0,0 +1,59 @@ + + + + + + + FDC3 Demo Toolbar provider config + + + + + +
+

JSON Config

+
+ The provider JSON config was not found +
+

+  
+ + diff --git a/toolbar-ui-angular/src/assets/styles/bootstrap.min.css b/toolbar-ui-angular/src/assets/styles/bootstrap.min.css new file mode 100644 index 0000000..490938a --- /dev/null +++ b/toolbar-ui-angular/src/assets/styles/bootstrap.min.css @@ -0,0 +1,11032 @@ +/*! + * Bootswatch v4.3.1 + * Homepage: https://bootswatch.com + * Copyright 2012-2019 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*/ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + :root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #ee5f5b; + --orange: #fd7e14; + --yellow: #f89406; + --green: #62c462; + --teal: #20c997; + --cyan: #5bc0de; + --white: #fff; + --gray: #7A8288; + --gray-dark: #3A3F44; + --primary: #3A3F44; + --secondary: #7A8288; + --success: #62c462; + --info: #5bc0de; + --warning: #f89406; + --danger: #ee5f5b; + --light: #e9ecef; + --dark: #272B30; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + } + + *, + *::before, + *::after { + -webkit-box-sizing: border-box; + box-sizing: border-box; + } + + html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } + + article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; + } + + body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #aaa; + text-align: left; + background-color: #272B30; + } + + [tabindex="-1"]:focus { + outline: 0 !important; + } + + hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; + overflow: visible; + } + + h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; + } + + p { + margin-top: 0; + margin-bottom: 1rem; + } + + abbr[title], + abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + text-decoration-skip-ink: none; + } + + address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; + } + + ol, + ul, + dl { + margin-top: 0; + margin-bottom: 1rem; + } + + ol ol, + ul ul, + ol ul, + ul ol { + margin-bottom: 0; + } + + dt { + font-weight: 700; + } + + dd { + margin-bottom: .5rem; + margin-left: 0; + } + + blockquote { + margin: 0 0 1rem; + } + + b, + strong { + font-weight: bolder; + } + + small { + font-size: 80%; + } + + sub, + sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } + + sub { + bottom: -.25em; + } + + sup { + top: -.5em; + } + + a { + color: #fff; + text-decoration: none; + background-color: transparent; + } + + a:hover { + color: #d9d9d9; + text-decoration: underline; + } + + a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; + } + + a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; + } + + a:not([href]):not([tabindex]):focus { + outline: 0; + } + + pre, + code, + kbd, + samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; + } + + pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + } + + figure { + margin: 0 0 1rem; + } + + img { + vertical-align: middle; + border-style: none; + } + + svg { + overflow: hidden; + vertical-align: middle; + } + + table { + border-collapse: collapse; + } + + caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #7A8288; + text-align: left; + caption-side: bottom; + } + + th { + text-align: inherit; + } + + label { + display: inline-block; + margin-bottom: 0.5rem; + } + + button { + border-radius: 0; + } + + button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; + } + + input, + button, + select, + optgroup, + textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + + button, + input { + overflow: visible; + } + + button, + select { + text-transform: none; + } + + select { + word-wrap: normal; + } + + button, + [type="button"], + [type="reset"], + [type="submit"] { + -webkit-appearance: button; + } + + button:not(:disabled), + [type="button"]:not(:disabled), + [type="reset"]:not(:disabled), + [type="submit"]:not(:disabled) { + cursor: pointer; + } + + button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; + } + + input[type="radio"], + input[type="checkbox"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } + + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + -webkit-appearance: listbox; + } + + textarea { + overflow: auto; + resize: vertical; + } + + fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; + } + + legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; + } + + progress { + vertical-align: baseline; + } + + [type="number"]::-webkit-inner-spin-button, + [type="number"]::-webkit-outer-spin-button { + height: auto; + } + + [type="search"] { + outline-offset: -2px; + -webkit-appearance: none; + } + + [type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + + ::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; + } + + output { + display: inline-block; + } + + summary { + display: list-item; + cursor: pointer; + } + + template { + display: none; + } + + [hidden] { + display: none !important; + } + + h1, h2, h3, h4, h5, h6, + .h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + } + + h1, .h1 { + font-size: 2.34375rem; + } + + h2, .h2 { + font-size: 1.875rem; + } + + h3, .h3 { + font-size: 1.640625rem; + } + + h4, .h4 { + font-size: 1.40625rem; + } + + h5, .h5 { + font-size: 1.171875rem; + } + + h6, .h6 { + font-size: 0.9375rem; + } + + .lead { + font-size: 1.171875rem; + font-weight: 300; + } + + .display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; + } + + .display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; + } + + .display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; + } + + .display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; + } + + hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); + } + + small, + .small { + font-size: 80%; + font-weight: 400; + } + + mark, + .mark { + padding: 0.2em; + background-color: #fcf8e3; + } + + .list-unstyled { + padding-left: 0; + list-style: none; + } + + .list-inline { + padding-left: 0; + list-style: none; + } + + .list-inline-item { + display: inline-block; + } + + .list-inline-item:not(:last-child) { + margin-right: 0.5rem; + } + + .initialism { + font-size: 90%; + text-transform: uppercase; + } + + .blockquote { + margin-bottom: 1rem; + font-size: 1.171875rem; + } + + .blockquote-footer { + display: block; + font-size: 80%; + color: #7A8288; + } + + .blockquote-footer::before { + content: "\2014\00A0"; + } + + .img-fluid { + max-width: 100%; + height: auto; + } + + .img-thumbnail { + padding: 0.25rem; + background-color: #272B30; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; + } + + .figure { + display: inline-block; + } + + .figure-img { + margin-bottom: 0.5rem; + line-height: 1; + } + + .figure-caption { + font-size: 90%; + color: #7A8288; + } + + code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; + } + + a > code { + color: inherit; + } + + kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #272B30; + border-radius: 0.2rem; + } + + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; + } + + pre { + display: block; + font-size: 87.5%; + color: inherit; + } + + pre code { + font-size: inherit; + color: inherit; + word-break: normal; + } + + .pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } + + .container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + + @media (min-width: 576px) { + .container { + max-width: 540px; + } + } + + @media (min-width: 768px) { + .container { + max-width: 720px; + } + } + + @media (min-width: 992px) { + .container { + max-width: 960px; + } + } + + @media (min-width: 1200px) { + .container { + max-width: 1140px; + } + } + + .container-fluid { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + + .row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; + } + + .no-gutters { + margin-right: 0; + margin-left: 0; + } + + .no-gutters > .col, + .no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; + } + + .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, + .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, + .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, + .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, + .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, + .col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; + } + + .col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + + .col-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + + .col-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; + } + + .col-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; + } + + .col-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + + .col-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; + } + + .col-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; + } + + .col-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + + .col-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; + } + + .col-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; + } + + .col-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + + .col-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; + } + + .col-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; + } + + .col-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + + .order-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + } + + .order-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13; + } + + .order-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + } + + .order-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + } + + .order-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + } + + .order-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + } + + .order-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; + } + + .order-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + } + + .order-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; + } + + .order-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; + } + + .order-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; + } + + .order-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + } + + .order-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; + } + + .order-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; + } + + .order-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; + } + + .offset-1 { + margin-left: 8.3333333333%; + } + + .offset-2 { + margin-left: 16.6666666667%; + } + + .offset-3 { + margin-left: 25%; + } + + .offset-4 { + margin-left: 33.3333333333%; + } + + .offset-5 { + margin-left: 41.6666666667%; + } + + .offset-6 { + margin-left: 50%; + } + + .offset-7 { + margin-left: 58.3333333333%; + } + + .offset-8 { + margin-left: 66.6666666667%; + } + + .offset-9 { + margin-left: 75%; + } + + .offset-10 { + margin-left: 83.3333333333%; + } + + .offset-11 { + margin-left: 91.6666666667%; + } + + @media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.3333333333%; + } + .offset-sm-2 { + margin-left: 16.6666666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.3333333333%; + } + .offset-sm-5 { + margin-left: 41.6666666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.3333333333%; + } + .offset-sm-8 { + margin-left: 66.6666666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.3333333333%; + } + .offset-sm-11 { + margin-left: 91.6666666667%; + } + } + + @media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-md-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.3333333333%; + } + .offset-md-2 { + margin-left: 16.6666666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.3333333333%; + } + .offset-md-5 { + margin-left: 41.6666666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.3333333333%; + } + .offset-md-8 { + margin-left: 66.6666666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.3333333333%; + } + .offset-md-11 { + margin-left: 91.6666666667%; + } + } + + @media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.3333333333%; + } + .offset-lg-2 { + margin-left: 16.6666666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.3333333333%; + } + .offset-lg-5 { + margin-left: 41.6666666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.3333333333%; + } + .offset-lg-8 { + margin-left: 66.6666666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.3333333333%; + } + .offset-lg-11 { + margin-left: 91.6666666667%; + } + } + + @media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 8.3333333333%; + flex: 0 0 8.3333333333%; + max-width: 8.3333333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 16.6666666667%; + flex: 0 0 16.6666666667%; + max-width: 16.6666666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 33.3333333333%; + flex: 0 0 33.3333333333%; + max-width: 33.3333333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 41.6666666667%; + flex: 0 0 41.6666666667%; + max-width: 41.6666666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 58.3333333333%; + flex: 0 0 58.3333333333%; + max-width: 58.3333333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 66.6666666667%; + flex: 0 0 66.6666666667%; + max-width: 66.6666666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 83.3333333333%; + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 91.6666666667%; + flex: 0 0 91.6666666667%; + max-width: 91.6666666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -webkit-box-ordinal-group: 14; + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -webkit-box-ordinal-group: 7; + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -webkit-box-ordinal-group: 8; + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -webkit-box-ordinal-group: 9; + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -webkit-box-ordinal-group: 11; + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -webkit-box-ordinal-group: 12; + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -webkit-box-ordinal-group: 13; + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.3333333333%; + } + .offset-xl-2 { + margin-left: 16.6666666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.3333333333%; + } + .offset-xl-5 { + margin-left: 41.6666666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.3333333333%; + } + .offset-xl-8 { + margin-left: 66.6666666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.3333333333%; + } + .offset-xl-11 { + margin-left: 91.6666666667%; + } + } + + .table { + width: 100%; + margin-bottom: 1rem; + color: #aaa; + } + + .table th, + .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid rgba(0, 0, 0, 0.6); + } + + .table thead th { + vertical-align: bottom; + border-bottom: 2px solid rgba(0, 0, 0, 0.6); + } + + .table tbody + tbody { + border-top: 2px solid rgba(0, 0, 0, 0.6); + } + + .table-sm th, + .table-sm td { + padding: 0.3rem; + } + + .table-bordered { + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .table-bordered th, + .table-bordered td { + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .table-bordered thead th, + .table-bordered thead td { + border-bottom-width: 2px; + } + + .table-borderless th, + .table-borderless td, + .table-borderless thead th, + .table-borderless tbody + tbody { + border: 0; + } + + .table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); + } + + .table-hover tbody tr:hover { + color: #aaa; + background-color: rgba(255, 255, 255, 0.075); + } + + .table-primary, + .table-primary > th, + .table-primary > td { + background-color: #c8c9cb; + } + + .table-primary th, + .table-primary td, + .table-primary thead th, + .table-primary tbody + tbody { + border-color: #999b9e; + } + + .table-hover .table-primary:hover { + background-color: #bbbcbf; + } + + .table-hover .table-primary:hover > td, + .table-hover .table-primary:hover > th { + background-color: #bbbcbf; + } + + .table-secondary, + .table-secondary > th, + .table-secondary > td { + background-color: #dadcde; + } + + .table-secondary th, + .table-secondary td, + .table-secondary thead th, + .table-secondary tbody + tbody { + border-color: #babec1; + } + + .table-hover .table-secondary:hover { + background-color: #cdcfd2; + } + + .table-hover .table-secondary:hover > td, + .table-hover .table-secondary:hover > th { + background-color: #cdcfd2; + } + + .table-success, + .table-success > th, + .table-success > td { + background-color: #d3eed3; + } + + .table-success th, + .table-success td, + .table-success thead th, + .table-success tbody + tbody { + border-color: #ade0ad; + } + + .table-hover .table-success:hover { + background-color: #c1e7c1; + } + + .table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { + background-color: #c1e7c1; + } + + .table-info, + .table-info > th, + .table-info > td { + background-color: #d1edf6; + } + + .table-info th, + .table-info td, + .table-info thead th, + .table-info tbody + tbody { + border-color: #aadeee; + } + + .table-hover .table-info:hover { + background-color: #bce5f2; + } + + .table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { + background-color: #bce5f2; + } + + .table-warning, + .table-warning > th, + .table-warning > td { + background-color: #fde1b9; + } + + .table-warning th, + .table-warning td, + .table-warning thead th, + .table-warning tbody + tbody { + border-color: #fbc77e; + } + + .table-hover .table-warning:hover { + background-color: #fcd6a0; + } + + .table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { + background-color: #fcd6a0; + } + + .table-danger, + .table-danger > th, + .table-danger > td { + background-color: #fad2d1; + } + + .table-danger th, + .table-danger td, + .table-danger thead th, + .table-danger tbody + tbody { + border-color: #f6acaa; + } + + .table-hover .table-danger:hover { + background-color: #f8bcba; + } + + .table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { + background-color: #f8bcba; + } + + .table-light, + .table-light > th, + .table-light > td { + background-color: #f9fafb; + } + + .table-light th, + .table-light td, + .table-light thead th, + .table-light tbody + tbody { + border-color: #f4f5f7; + } + + .table-hover .table-light:hover { + background-color: #eaedf1; + } + + .table-hover .table-light:hover > td, + .table-hover .table-light:hover > th { + background-color: #eaedf1; + } + + .table-dark, + .table-dark > th, + .table-dark > td { + background-color: #c3c4c5; + } + + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #8f9193; + } + + .table-hover .table-dark:hover { + background-color: #b6b7b8; + } + + .table-hover .table-dark:hover > td, + .table-hover .table-dark:hover > th { + background-color: #b6b7b8; + } + + .table-active, + .table-active > th, + .table-active > td { + background-color: rgba(255, 255, 255, 0.075); + } + + .table-hover .table-active:hover { + background-color: rgba(242, 242, 242, 0.075); + } + + .table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { + background-color: rgba(242, 242, 242, 0.075); + } + + .table .thead-dark th { + color: #fff; + background-color: #3A3F44; + border-color: rgba(0, 0, 0, 0.6); + } + + .table .thead-light th { + color: #52575C; + background-color: #e9ecef; + border-color: rgba(0, 0, 0, 0.6); + } + + .table-dark { + color: #fff; + background-color: #3A3F44; + } + + .table-dark th, + .table-dark td, + .table-dark thead th { + border-color: rgba(0, 0, 0, 0.6); + } + + .table-dark.table-bordered { + border: 0; + } + + .table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); + } + + .table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); + } + + @media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } + } + + @media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } + } + + @media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } + } + + @media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } + } + + .table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + .table-responsive > .table-bordered { + border: 0; + } + + .form-control { + display: block; + width: 100%; + height: calc(1.5em + 1.5rem + 2px); + padding: 0.75rem 1rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #52575C; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .form-control { + -webkit-transition: none; + transition: none; + } + } + + .form-control::-ms-expand { + background-color: transparent; + border: 0; + } + + .form-control:focus { + color: #52575C; + background-color: #fff; + border-color: #757f89; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .form-control::-webkit-input-placeholder { + color: #7A8288; + opacity: 1; + } + + .form-control::-ms-input-placeholder { + color: #7A8288; + opacity: 1; + } + + .form-control::placeholder { + color: #7A8288; + opacity: 1; + } + + .form-control:disabled, .form-control[readonly] { + background-color: #ccc; + opacity: 1; + } + + select.form-control:focus::-ms-value { + color: #52575C; + background-color: #fff; + } + + .form-control-file, + .form-control-range { + display: block; + width: 100%; + } + + .col-form-label { + padding-top: calc(0.75rem + 1px); + padding-bottom: calc(0.75rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; + } + + .col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.171875rem; + line-height: 1.5; + } + + .col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.8203125rem; + line-height: 1.5; + } + + .form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + margin-bottom: 0; + line-height: 1.5; + color: #aaa; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; + } + + .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; + } + + .form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.8203125rem; + line-height: 1.5; + border-radius: 0.2rem; + } + + .form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.171875rem; + line-height: 1.5; + border-radius: 0.3rem; + } + + select.form-control[size], select.form-control[multiple] { + height: auto; + } + + textarea.form-control { + height: auto; + } + + .form-group { + margin-bottom: 1rem; + } + + .form-text { + display: block; + margin-top: 0.25rem; + } + + .form-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; + } + + .form-row > .col, + .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; + } + + .form-check { + position: relative; + display: block; + padding-left: 1.25rem; + } + + .form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; + } + + .form-check-input:disabled ~ .form-check-label { + color: #7A8288; + } + + .form-check-label { + margin-bottom: 0; + } + + .form-check-inline { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; + } + + .form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; + } + + .valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #62c462; + } + + .valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.8203125rem; + line-height: 1.5; + color: #272B30; + background-color: rgba(98, 196, 98, 0.9); + border-radius: 0.25rem; + } + + .was-validated .form-control:valid, .form-control.is-valid { + border-color: #62c462; + padding-right: calc(1.5em + 1.5rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2362c462' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.375rem); + background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem); + } + + .was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #62c462; + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + } + + .was-validated .form-control:valid ~ .valid-feedback, + .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, + .form-control.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 1.5rem); + background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem); + } + + .was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #62c462; + padding-right: calc((1em + 1.5rem) * 3 / 4 + 2rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%233A3F44' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2362c462' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 2rem/calc(0.75em + 0.75rem) calc(0.75em + 0.75rem); + } + + .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #62c462; + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + } + + .was-validated .custom-select:valid ~ .valid-feedback, + .was-validated .custom-select:valid ~ .valid-tooltip, .custom-select.is-valid ~ .valid-feedback, + .custom-select.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated .form-control-file:valid ~ .valid-feedback, + .was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, + .form-control-file.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #62c462; + } + + .was-validated .form-check-input:valid ~ .valid-feedback, + .was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, + .form-check-input.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #62c462; + } + + .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #62c462; + } + + .was-validated .custom-control-input:valid ~ .valid-feedback, + .was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, + .custom-control-input.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #87d287; + background-color: #87d287; + } + + .was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + } + + .was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #62c462; + } + + .was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #62c462; + } + + .was-validated .custom-file-input:valid ~ .valid-feedback, + .was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, + .custom-file-input.is-valid ~ .valid-tooltip { + display: block; + } + + .was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #62c462; + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.25); + } + + .invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #ee5f5b; + } + + .invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.8203125rem; + line-height: 1.5; + color: #fff; + background-color: rgba(238, 95, 91, 0.9); + border-radius: 0.25rem; + } + + .was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #ee5f5b; + padding-right: calc(1.5em + 1.5rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ee5f5b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23ee5f5b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E"); + background-repeat: no-repeat; + background-position: center right calc(0.375em + 0.375rem); + background-size: calc(0.75em + 0.75rem) calc(0.75em + 0.75rem); + } + + .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #ee5f5b; + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + } + + .was-validated .form-control:invalid ~ .invalid-feedback, + .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, + .form-control.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 1.5rem); + background-position: top calc(0.375em + 0.375rem) right calc(0.375em + 0.375rem); + } + + .was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #ee5f5b; + padding-right: calc((1em + 1.5rem) * 3 / 4 + 2rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%233A3F44' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23ee5f5b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23ee5f5b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 2rem/calc(0.75em + 0.75rem) calc(0.75em + 0.75rem); + } + + .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #ee5f5b; + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + } + + .was-validated .custom-select:invalid ~ .invalid-feedback, + .was-validated .custom-select:invalid ~ .invalid-tooltip, .custom-select.is-invalid ~ .invalid-feedback, + .custom-select.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated .form-control-file:invalid ~ .invalid-feedback, + .was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, + .form-control-file.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #ee5f5b; + } + + .was-validated .form-check-input:invalid ~ .invalid-feedback, + .was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, + .form-check-input.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #ee5f5b; + } + + .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #ee5f5b; + } + + .was-validated .custom-control-input:invalid ~ .invalid-feedback, + .was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, + .custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #f38c89; + background-color: #f38c89; + } + + .was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + } + + .was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #ee5f5b; + } + + .was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #ee5f5b; + } + + .was-validated .custom-file-input:invalid ~ .invalid-feedback, + .was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, + .custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; + } + + .was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #ee5f5b; + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.25); + } + + .form-inline { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + + .form-inline .form-check { + width: 100%; + } + + @media (min-width: 576px) { + .form-inline label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } + } + + .btn { + display: inline-block; + font-weight: 400; + color: #aaa; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.75rem 1rem; + font-size: 0.9375rem; + line-height: 1.5; + border-radius: 0.25rem; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .btn { + -webkit-transition: none; + transition: none; + } + } + + .btn:hover { + color: #aaa; + text-decoration: none; + } + + .btn:focus, .btn.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .btn.disabled, .btn:disabled { + opacity: 0.65; + } + + a.btn.disabled, + fieldset:disabled a.btn { + pointer-events: none; + } + + .btn-primary { + color: #fff; + background-color: #3A3F44; + border-color: #3A3F44; + } + + .btn-primary:hover { + color: #fff; + background-color: #282c2f; + border-color: #232628; + } + + .btn-primary:focus, .btn-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(88, 92, 96, 0.5); + box-shadow: 0 0 0 0.2rem rgba(88, 92, 96, 0.5); + } + + .btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #3A3F44; + border-color: #3A3F44; + } + + .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, + .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #232628; + border-color: #1d1f22; + } + + .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, + .show > .btn-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(88, 92, 96, 0.5); + box-shadow: 0 0 0 0.2rem rgba(88, 92, 96, 0.5); + } + + .btn-secondary { + color: #fff; + background-color: #7A8288; + border-color: #7A8288; + } + + .btn-secondary:hover { + color: #fff; + background-color: #686f74; + border-color: #62686d; + } + + .btn-secondary:focus, .btn-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(142, 149, 154, 0.5); + box-shadow: 0 0 0 0.2rem rgba(142, 149, 154, 0.5); + } + + .btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #7A8288; + border-color: #7A8288; + } + + .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, + .show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #62686d; + border-color: #5c6267; + } + + .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, + .show > .btn-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(142, 149, 154, 0.5); + box-shadow: 0 0 0 0.2rem rgba(142, 149, 154, 0.5); + } + + .btn-success { + color: #272B30; + background-color: #62c462; + border-color: #62c462; + } + + .btn-success:hover { + color: #fff; + background-color: #46ba46; + border-color: #42b142; + } + + .btn-success:focus, .btn-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(89, 173, 91, 0.5); + box-shadow: 0 0 0 0.2rem rgba(89, 173, 91, 0.5); + } + + .btn-success.disabled, .btn-success:disabled { + color: #272B30; + background-color: #62c462; + border-color: #62c462; + } + + .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, + .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #42b142; + border-color: #3fa73f; + } + + .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, + .show > .btn-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(89, 173, 91, 0.5); + box-shadow: 0 0 0 0.2rem rgba(89, 173, 91, 0.5); + } + + .btn-info { + color: #272B30; + background-color: #5bc0de; + border-color: #5bc0de; + } + + .btn-info:hover { + color: #fff; + background-color: #3bb4d8; + border-color: #31b0d5; + } + + .btn-info:focus, .btn-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(83, 170, 196, 0.5); + box-shadow: 0 0 0 0.2rem rgba(83, 170, 196, 0.5); + } + + .btn-info.disabled, .btn-info:disabled { + color: #272B30; + background-color: #5bc0de; + border-color: #5bc0de; + } + + .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, + .show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #31b0d5; + border-color: #2aaacf; + } + + .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, + .show > .btn-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(83, 170, 196, 0.5); + box-shadow: 0 0 0 0.2rem rgba(83, 170, 196, 0.5); + } + + .btn-warning { + color: #272B30; + background-color: #f89406; + border-color: #f89406; + } + + .btn-warning:hover { + color: #fff; + background-color: #d37e05; + border-color: #c67605; + } + + .btn-warning:focus, .btn-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(217, 132, 12, 0.5); + box-shadow: 0 0 0 0.2rem rgba(217, 132, 12, 0.5); + } + + .btn-warning.disabled, .btn-warning:disabled { + color: #272B30; + background-color: #f89406; + border-color: #f89406; + } + + .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, + .show > .btn-warning.dropdown-toggle { + color: #fff; + background-color: #c67605; + border-color: #ba6f04; + } + + .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, + .show > .btn-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(217, 132, 12, 0.5); + box-shadow: 0 0 0 0.2rem rgba(217, 132, 12, 0.5); + } + + .btn-danger { + color: #fff; + background-color: #ee5f5b; + border-color: #ee5f5b; + } + + .btn-danger:hover { + color: #fff; + background-color: #ea3d38; + border-color: #e9322d; + } + + .btn-danger:focus, .btn-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(241, 119, 116, 0.5); + box-shadow: 0 0 0 0.2rem rgba(241, 119, 116, 0.5); + } + + .btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #ee5f5b; + border-color: #ee5f5b; + } + + .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, + .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #e9322d; + border-color: #e82721; + } + + .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, + .show > .btn-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(241, 119, 116, 0.5); + box-shadow: 0 0 0 0.2rem rgba(241, 119, 116, 0.5); + } + + .btn-light { + color: #272B30; + background-color: #e9ecef; + border-color: #e9ecef; + } + + .btn-light:hover { + color: #272B30; + background-color: #d3d9df; + border-color: #cbd3da; + } + + .btn-light:focus, .btn-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(204, 207, 210, 0.5); + box-shadow: 0 0 0 0.2rem rgba(204, 207, 210, 0.5); + } + + .btn-light.disabled, .btn-light:disabled { + color: #272B30; + background-color: #e9ecef; + border-color: #e9ecef; + } + + .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, + .show > .btn-light.dropdown-toggle { + color: #272B30; + background-color: #cbd3da; + border-color: #c4ccd4; + } + + .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, + .show > .btn-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(204, 207, 210, 0.5); + box-shadow: 0 0 0 0.2rem rgba(204, 207, 210, 0.5); + } + + .btn-dark { + color: #fff; + background-color: #272B30; + border-color: #272B30; + } + + .btn-dark:hover { + color: #fff; + background-color: #16181b; + border-color: #101214; + } + + .btn-dark:focus, .btn-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(71, 75, 79, 0.5); + box-shadow: 0 0 0 0.2rem rgba(71, 75, 79, 0.5); + } + + .btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #272B30; + border-color: #272B30; + } + + .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, + .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #101214; + border-color: #0a0b0d; + } + + .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, + .show > .btn-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(71, 75, 79, 0.5); + box-shadow: 0 0 0 0.2rem rgba(71, 75, 79, 0.5); + } + + .btn-outline-primary { + color: #3A3F44; + border-color: #3A3F44; + } + + .btn-outline-primary:hover { + color: #fff; + background-color: #3A3F44; + border-color: #3A3F44; + } + + .btn-outline-primary:focus, .btn-outline-primary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + } + + .btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #3A3F44; + background-color: transparent; + } + + .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, + .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #3A3F44; + border-color: #3A3F44; + } + + .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-primary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + } + + .btn-outline-secondary { + color: #7A8288; + border-color: #7A8288; + } + + .btn-outline-secondary:hover { + color: #fff; + background-color: #7A8288; + border-color: #7A8288; + } + + .btn-outline-secondary:focus, .btn-outline-secondary.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + } + + .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #7A8288; + background-color: transparent; + } + + .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, + .show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #7A8288; + border-color: #7A8288; + } + + .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-secondary.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + } + + .btn-outline-success { + color: #62c462; + border-color: #62c462; + } + + .btn-outline-success:hover { + color: #272B30; + background-color: #62c462; + border-color: #62c462; + } + + .btn-outline-success:focus, .btn-outline-success.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + } + + .btn-outline-success.disabled, .btn-outline-success:disabled { + color: #62c462; + background-color: transparent; + } + + .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, + .show > .btn-outline-success.dropdown-toggle { + color: #272B30; + background-color: #62c462; + border-color: #62c462; + } + + .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-success.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + } + + .btn-outline-info { + color: #5bc0de; + border-color: #5bc0de; + } + + .btn-outline-info:hover { + color: #272B30; + background-color: #5bc0de; + border-color: #5bc0de; + } + + .btn-outline-info:focus, .btn-outline-info.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + } + + .btn-outline-info.disabled, .btn-outline-info:disabled { + color: #5bc0de; + background-color: transparent; + } + + .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, + .show > .btn-outline-info.dropdown-toggle { + color: #272B30; + background-color: #5bc0de; + border-color: #5bc0de; + } + + .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-info.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + } + + .btn-outline-warning { + color: #f89406; + border-color: #f89406; + } + + .btn-outline-warning:hover { + color: #272B30; + background-color: #f89406; + border-color: #f89406; + } + + .btn-outline-warning:focus, .btn-outline-warning.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + } + + .btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #f89406; + background-color: transparent; + } + + .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, + .show > .btn-outline-warning.dropdown-toggle { + color: #272B30; + background-color: #f89406; + border-color: #f89406; + } + + .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-warning.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + } + + .btn-outline-danger { + color: #ee5f5b; + border-color: #ee5f5b; + } + + .btn-outline-danger:hover { + color: #fff; + background-color: #ee5f5b; + border-color: #ee5f5b; + } + + .btn-outline-danger:focus, .btn-outline-danger.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + } + + .btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #ee5f5b; + background-color: transparent; + } + + .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, + .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #ee5f5b; + border-color: #ee5f5b; + } + + .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-danger.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + } + + .btn-outline-light { + color: #e9ecef; + border-color: #e9ecef; + } + + .btn-outline-light:hover { + color: #272B30; + background-color: #e9ecef; + border-color: #e9ecef; + } + + .btn-outline-light:focus, .btn-outline-light.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + } + + .btn-outline-light.disabled, .btn-outline-light:disabled { + color: #e9ecef; + background-color: transparent; + } + + .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, + .show > .btn-outline-light.dropdown-toggle { + color: #272B30; + background-color: #e9ecef; + border-color: #e9ecef; + } + + .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-light.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + } + + .btn-outline-dark { + color: #272B30; + border-color: #272B30; + } + + .btn-outline-dark:hover { + color: #fff; + background-color: #272B30; + border-color: #272B30; + } + + .btn-outline-dark:focus, .btn-outline-dark.focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + } + + .btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #272B30; + background-color: transparent; + } + + .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, + .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #272B30; + border-color: #272B30; + } + + .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-dark.dropdown-toggle:focus { + -webkit-box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + } + + .btn-link { + font-weight: 400; + color: #fff; + text-decoration: none; + } + + .btn-link:hover { + color: #d9d9d9; + text-decoration: underline; + } + + .btn-link:focus, .btn-link.focus { + text-decoration: underline; + -webkit-box-shadow: none; + box-shadow: none; + } + + .btn-link:disabled, .btn-link.disabled { + color: #7A8288; + pointer-events: none; + } + + .btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.171875rem; + line-height: 1.5; + border-radius: 0.3rem; + } + + .btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.8203125rem; + line-height: 1.5; + border-radius: 0.2rem; + } + + .btn-block { + display: block; + width: 100%; + } + + .btn-block + .btn-block { + margin-top: 0.5rem; + } + + input[type="submit"].btn-block, + input[type="reset"].btn-block, + input[type="button"].btn-block { + width: 100%; + } + + .fade { + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + } + + @media (prefers-reduced-motion: reduce) { + .fade { + -webkit-transition: none; + transition: none; + } + } + + .fade:not(.show) { + opacity: 0; + } + + .collapse:not(.show) { + display: none; + } + + .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; + } + + @media (prefers-reduced-motion: reduce) { + .collapsing { + -webkit-transition: none; + transition: none; + } + } + + .dropup, + .dropright, + .dropdown, + .dropleft { + position: relative; + } + + .dropdown-toggle { + white-space: nowrap; + } + + .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; + } + + .dropdown-toggle:empty::after { + margin-left: 0; + } + + .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 0.9375rem; + color: #aaa; + text-align: left; + list-style: none; + background-color: #3A3F44; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + } + + .dropdown-menu-left { + right: auto; + left: 0; + } + + .dropdown-menu-right { + right: 0; + left: auto; + } + + @media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } + } + + @media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } + } + + @media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } + } + + @media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } + } + + .dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; + } + + .dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; + } + + .dropup .dropdown-toggle:empty::after { + margin-left: 0; + } + + .dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; + } + + .dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; + } + + .dropright .dropdown-toggle:empty::after { + margin-left: 0; + } + + .dropright .dropdown-toggle::after { + vertical-align: 0; + } + + .dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; + } + + .dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + } + + .dropleft .dropdown-toggle::after { + display: none; + } + + .dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; + } + + .dropleft .dropdown-toggle:empty::after { + margin-left: 0; + } + + .dropleft .dropdown-toggle::before { + vertical-align: 0; + } + + .dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; + } + + .dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.15); + } + + .dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #aaa; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + } + + .dropdown-item:hover, .dropdown-item:focus { + color: #fff; + text-decoration: none; + background-color: #272B30; + } + + .dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #3A3F44; + } + + .dropdown-item.disabled, .dropdown-item:disabled { + color: #7A8288; + pointer-events: none; + background-color: transparent; + } + + .dropdown-menu.show { + display: block; + } + + .dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.8203125rem; + color: #7A8288; + white-space: nowrap; + } + + .dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #aaa; + } + + .btn-group, + .btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; + } + + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + } + + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { + z-index: 1; + } + + .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 1; + } + + .btn-toolbar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + + .btn-toolbar .input-group { + width: auto; + } + + .btn-group > .btn:not(:first-child), + .btn-group > .btn-group:not(:first-child) { + margin-left: -1px; + } + + .btn-group > .btn:not(:last-child):not(.dropdown-toggle), + .btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .btn-group > .btn:not(:first-child), + .btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; + } + + .dropdown-toggle-split::after, + .dropup .dropdown-toggle-split::after, + .dropright .dropdown-toggle-split::after { + margin-left: 0; + } + + .dropleft .dropdown-toggle-split::before { + margin-right: 0; + } + + .btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; + } + + .btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; + } + + .btn-group-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + } + + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group { + width: 100%; + } + + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; + } + + .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), + .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .btn-group-toggle > .btn, + .btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; + } + + .btn-group-toggle > .btn input[type="radio"], + .btn-group-toggle > .btn input[type="checkbox"], + .btn-group-toggle > .btn-group > .btn input[type="radio"], + .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + + .input-group { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; + } + + .input-group > .form-control, + .input-group > .form-control-plaintext, + .input-group > .custom-select, + .input-group > .custom-file { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; + } + + .input-group > .form-control + .form-control, + .input-group > .form-control + .custom-select, + .input-group > .form-control + .custom-file, + .input-group > .form-control-plaintext + .form-control, + .input-group > .form-control-plaintext + .custom-select, + .input-group > .form-control-plaintext + .custom-file, + .input-group > .custom-select + .form-control, + .input-group > .custom-select + .custom-select, + .input-group > .custom-select + .custom-file, + .input-group > .custom-file + .form-control, + .input-group > .custom-file + .custom-select, + .input-group > .custom-file + .custom-file { + margin-left: -1px; + } + + .input-group > .form-control:focus, + .input-group > .custom-select:focus, + .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; + } + + .input-group > .custom-file .custom-file-input:focus { + z-index: 4; + } + + .input-group > .form-control:not(:last-child), + .input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .input-group > .form-control:not(:first-child), + .input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .input-group > .custom-file { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + + .input-group > .custom-file:not(:last-child) .custom-file-label, + .input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .input-group-prepend, + .input-group-append { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } + + .input-group-prepend .btn, + .input-group-append .btn { + position: relative; + z-index: 2; + } + + .input-group-prepend .btn:focus, + .input-group-append .btn:focus { + z-index: 3; + } + + .input-group-prepend .btn + .btn, + .input-group-prepend .btn + .input-group-text, + .input-group-prepend .input-group-text + .input-group-text, + .input-group-prepend .input-group-text + .btn, + .input-group-append .btn + .btn, + .input-group-append .btn + .input-group-text, + .input-group-append .input-group-text + .input-group-text, + .input-group-append .input-group-text + .btn { + margin-left: -1px; + } + + .input-group-prepend { + margin-right: -1px; + } + + .input-group-append { + margin-left: -1px; + } + + .input-group-text { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0.75rem 1rem; + margin-bottom: 0; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #52575C; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; + } + + .input-group-text input[type="radio"], + .input-group-text input[type="checkbox"] { + margin-top: 0; + } + + .input-group-lg > .form-control:not(textarea), + .input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); + } + + .input-group-lg > .form-control, + .input-group-lg > .custom-select, + .input-group-lg > .input-group-prepend > .input-group-text, + .input-group-lg > .input-group-append > .input-group-text, + .input-group-lg > .input-group-prepend > .btn, + .input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.171875rem; + line-height: 1.5; + border-radius: 0.3rem; + } + + .input-group-sm > .form-control:not(textarea), + .input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); + } + + .input-group-sm > .form-control, + .input-group-sm > .custom-select, + .input-group-sm > .input-group-prepend > .input-group-text, + .input-group-sm > .input-group-append > .input-group-text, + .input-group-sm > .input-group-prepend > .btn, + .input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.8203125rem; + line-height: 1.5; + border-radius: 0.2rem; + } + + .input-group-lg > .custom-select, + .input-group-sm > .custom-select { + padding-right: 2rem; + } + + .input-group > .input-group-prepend > .btn, + .input-group > .input-group-prepend > .input-group-text, + .input-group > .input-group-append:not(:last-child) > .btn, + .input-group > .input-group-append:not(:last-child) > .input-group-text, + .input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), + .input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .input-group > .input-group-append > .btn, + .input-group > .input-group-append > .input-group-text, + .input-group > .input-group-prepend:not(:first-child) > .btn, + .input-group > .input-group-prepend:not(:first-child) > .input-group-text, + .input-group > .input-group-prepend:first-child > .btn:not(:first-child), + .input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .custom-control { + position: relative; + display: block; + min-height: 1.40625rem; + padding-left: 1.5rem; + } + + .custom-control-inline { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; + } + + .custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; + } + + .custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #3A3F44; + background-color: #3A3F44; + } + + .custom-control-input:focus ~ .custom-control-label::before { + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #757f89; + } + + .custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #9098a0; + border-color: #9098a0; + } + + .custom-control-input:disabled ~ .custom-control-label { + color: #7A8288; + } + + .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #ccc; + } + + .custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; + } + + .custom-control-label::before { + position: absolute; + top: 0.203125rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #999 solid 1px; + } + + .custom-control-label::after { + position: absolute; + top: 0.203125rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; + } + + .custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; + } + + .custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e"); + } + + .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #3A3F44; + background-color: #3A3F44; + } + + .custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); + } + + .custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 63, 68, 0.5); + } + + .custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(58, 63, 68, 0.5); + } + + .custom-radio .custom-control-label::before { + border-radius: 50%; + } + + .custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); + } + + .custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 63, 68, 0.5); + } + + .custom-switch { + padding-left: 2.25rem; + } + + .custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; + } + + .custom-switch .custom-control-label::after { + top: calc(0.203125rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #999; + border-radius: 0.5rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + -webkit-transition: none; + transition: none; + } + } + + .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(0.75rem); + transform: translateX(0.75rem); + } + + .custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(58, 63, 68, 0.5); + } + + .custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 1.5rem + 2px); + padding: 0.75rem 2rem 0.75rem 1rem; + font-size: 0.9375rem; + font-weight: 400; + line-height: 1.5; + color: #52575C; + vertical-align: middle; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%233A3F44' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 1rem center/8px 10px; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + } + + .custom-select:focus { + border-color: #757f89; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-select:focus::-ms-value { + color: #52575C; + background-color: #fff; + } + + .custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 1rem; + background-image: none; + } + + .custom-select:disabled { + color: #7A8288; + background-color: #e9ecef; + } + + .custom-select::-ms-expand { + display: none; + } + + .custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.8203125rem; + } + + .custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.171875rem; + } + + .custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 1.5rem + 2px); + margin-bottom: 0; + } + + .custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 1.5rem + 2px); + margin: 0; + opacity: 0; + } + + .custom-file-input:focus ~ .custom-file-label { + border-color: #757f89; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-file-input:disabled ~ .custom-file-label { + background-color: #ccc; + } + + .custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; + } + + .custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); + } + + .custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 1.5rem + 2px); + padding: 0.75rem 1rem; + font-weight: 400; + line-height: 1.5; + color: #52575C; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; + } + + .custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 1.5rem); + padding: 0.75rem 1rem; + line-height: 1.5; + color: #52575C; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; + } + + .custom-range { + width: 100%; + height: calc(1rem + 0.4rem); + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + } + + .custom-range:focus { + outline: none; + } + + .custom-range:focus::-webkit-slider-thumb { + -webkit-box-shadow: 0 0 0 1px #272B30, 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 1px #272B30, 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #272B30, 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #272B30, 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .custom-range::-moz-focus-outer { + border: 0; + } + + .custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #3A3F44; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; + } + + @media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } + } + + .custom-range::-webkit-slider-thumb:active { + background-color: #9098a0; + } + + .custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; + } + + .custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #3A3F44; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; + } + + @media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + -webkit-transition: none; + transition: none; + } + } + + .custom-range::-moz-range-thumb:active { + background-color: #9098a0; + } + + .custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; + } + + .custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #3A3F44; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + appearance: none; + } + + @media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + -webkit-transition: none; + transition: none; + } + } + + .custom-range::-ms-thumb:active { + background-color: #9098a0; + } + + .custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; + } + + .custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; + } + + .custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; + } + + .custom-range:disabled::-webkit-slider-thumb { + background-color: #999; + } + + .custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; + } + + .custom-range:disabled::-moz-range-thumb { + background-color: #999; + } + + .custom-range:disabled::-moz-range-track { + cursor: default; + } + + .custom-range:disabled::-ms-thumb { + background-color: #999; + } + + .custom-control-label::before, + .custom-file-label, + .custom-select { + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + -webkit-transition: none; + transition: none; + } + } + + .nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; + } + + .nav-link { + display: block; + padding: 0.5rem 1rem; + } + + .nav-link:hover, .nav-link:focus { + text-decoration: none; + } + + .nav-link.disabled { + color: #7A8288; + pointer-events: none; + cursor: default; + } + + .nav-tabs { + border-bottom: 1px solid rgba(0, 0, 0, 0.6); + } + + .nav-tabs .nav-item { + margin-bottom: -1px; + } + + .nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + } + + .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: rgba(0, 0, 0, 0.6); + } + + .nav-tabs .nav-link.disabled { + color: #7A8288; + background-color: transparent; + border-color: transparent; + } + + .nav-tabs .nav-link.active, + .nav-tabs .nav-item.show .nav-link { + color: #fff; + background-color: #272B30; + border-color: rgba(0, 0, 0, 0.6); + } + + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .nav-pills .nav-link { + border-radius: 0.25rem; + } + + .nav-pills .nav-link.active, + .nav-pills .show > .nav-link { + color: #fff; + background-color: #3A3F44; + } + + .nav-fill .nav-item { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; + } + + .nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; + } + + .tab-content > .tab-pane { + display: none; + } + + .tab-content > .active { + display: block; + } + + .navbar { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0 1rem; + } + + .navbar > .container, + .navbar > .container-fluid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + } + + .navbar-brand { + display: inline-block; + padding-top: 0.32421875rem; + padding-bottom: 0.32421875rem; + margin-right: 1rem; + font-size: 1.171875rem; + line-height: inherit; + white-space: nowrap; + } + + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; + } + + .navbar-nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; + } + + .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; + } + + .navbar-nav .dropdown-menu { + position: static; + float: none; + } + + .navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + + .navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + } + + .navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.171875rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; + } + + .navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; + } + + .navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; + } + + @media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; + } + } + + @media (min-width: 576px) { + .navbar-expand-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + } + + @media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; + } + } + + @media (min-width: 768px) { + .navbar-expand-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + } + + @media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; + } + } + + @media (min-width: 992px) { + .navbar-expand-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + } + + @media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; + } + } + + @media (min-width: 1200px) { + .navbar-expand-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + } + + .navbar-expand { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + + .navbar-expand > .container, + .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; + } + + .navbar-expand .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + + .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; + } + + .navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + + .navbar-expand > .container, + .navbar-expand > .container-fluid { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + + .navbar-expand .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + + .navbar-expand .navbar-toggler { + display: none; + } + + .navbar-light .navbar-brand { + color: #3A3F44; + } + + .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: #3A3F44; + } + + .navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); + } + + .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: #3A3F44; + } + + .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); + } + + .navbar-light .navbar-nav .show > .nav-link, + .navbar-light .navbar-nav .active > .nav-link, + .navbar-light .navbar-nav .nav-link.show, + .navbar-light .navbar-nav .nav-link.active { + color: #3A3F44; + } + + .navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); + } + + .navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + } + + .navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); + } + + .navbar-light .navbar-text a { + color: #3A3F44; + } + + .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: #3A3F44; + } + + .navbar-dark .navbar-brand { + color: #fff; + } + + .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; + } + + .navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); + } + + .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: #fff; + } + + .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); + } + + .navbar-dark .navbar-nav .show > .nav-link, + .navbar-dark .navbar-nav .active > .nav-link, + .navbar-dark .navbar-nav .nav-link.show, + .navbar-dark .navbar-nav .nav-link.active { + color: #fff; + } + + .navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); + } + + .navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + } + + .navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); + } + + .navbar-dark .navbar-text a { + color: #fff; + } + + .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; + } + + .card { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #32383e; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.6); + border-radius: 0.25rem; + } + + .card > hr { + margin-right: 0; + margin-left: 0; + } + + .card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + } + + .card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + } + + .card-body { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1.25rem; + } + + .card-title { + margin-bottom: 0.75rem; + } + + .card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; + } + + .card-text:last-child { + margin-bottom: 0; + } + + .card-link:hover { + text-decoration: none; + } + + .card-link + .card-link { + margin-left: 1.25rem; + } + + .card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: #515960; + border-bottom: 1px solid rgba(0, 0, 0, 0.6); + } + + .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; + } + + .card-header + .list-group .list-group-item:first-child { + border-top: 0; + } + + .card-footer { + padding: 0.75rem 1.25rem; + background-color: #515960; + border-top: 1px solid rgba(0, 0, 0, 0.6); + } + + .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); + } + + .card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; + } + + .card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; + } + + .card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; + } + + .card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); + } + + .card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); + } + + .card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); + } + + .card-deck { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + + .card-deck .card { + margin-bottom: 15px; + } + + @media (min-width: 576px) { + .card-deck { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } + } + + .card-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + + .card-group > .card { + margin-bottom: 15px; + } + + @media (min-width: 576px) { + .card-group { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } + } + + .card-columns .card { + margin-bottom: 0.75rem; + } + + @media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } + } + + .accordion > .card { + overflow: hidden; + } + + .accordion > .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; + } + + .accordion > .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; + } + + .accordion > .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .accordion > .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .accordion > .card .card-header { + margin-bottom: -1px; + } + + .breadcrumb { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; + } + + .breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; + } + + .breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #7A8288; + content: "/"; + } + + .breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; + } + + .breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; + } + + .breadcrumb-item.active { + color: #999; + } + + .pagination { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; + } + + .page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #fff; + background-color: transparent; + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .page-link:hover { + z-index: 2; + color: #fff; + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 0, 0, 0.6); + } + + .page-link:focus { + z-index: 2; + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.25); + } + + .page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + } + + .page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + } + + .page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: transparent; + border-color: rgba(0, 0, 0, 0.6); + } + + .page-item.disabled .page-link { + color: #7A8288; + pointer-events: none; + cursor: auto; + background-color: transparent; + border-color: rgba(0, 0, 0, 0.6); + } + + .pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.171875rem; + line-height: 1.5; + } + + .pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; + } + + .pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; + } + + .pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.8203125rem; + line-height: 1.5; + } + + .pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; + } + + .pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; + } + + .badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .badge { + -webkit-transition: none; + transition: none; + } + } + + a.badge:hover, a.badge:focus { + text-decoration: none; + } + + .badge:empty { + display: none; + } + + .btn .badge { + position: relative; + top: -1px; + } + + .badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; + } + + .badge-primary { + color: #fff; + background-color: #3A3F44; + } + + a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #232628; + } + + a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + box-shadow: 0 0 0 0.2rem rgba(58, 63, 68, 0.5); + } + + .badge-secondary { + color: #fff; + background-color: #7A8288; + } + + a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #62686d; + } + + a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + box-shadow: 0 0 0 0.2rem rgba(122, 130, 136, 0.5); + } + + .badge-success { + color: #272B30; + background-color: #62c462; + } + + a.badge-success:hover, a.badge-success:focus { + color: #272B30; + background-color: #42b142; + } + + a.badge-success:focus, a.badge-success.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + box-shadow: 0 0 0 0.2rem rgba(98, 196, 98, 0.5); + } + + .badge-info { + color: #272B30; + background-color: #5bc0de; + } + + a.badge-info:hover, a.badge-info:focus { + color: #272B30; + background-color: #31b0d5; + } + + a.badge-info:focus, a.badge-info.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + box-shadow: 0 0 0 0.2rem rgba(91, 192, 222, 0.5); + } + + .badge-warning { + color: #272B30; + background-color: #f89406; + } + + a.badge-warning:hover, a.badge-warning:focus { + color: #272B30; + background-color: #c67605; + } + + a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + box-shadow: 0 0 0 0.2rem rgba(248, 148, 6, 0.5); + } + + .badge-danger { + color: #fff; + background-color: #ee5f5b; + } + + a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #e9322d; + } + + a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + box-shadow: 0 0 0 0.2rem rgba(238, 95, 91, 0.5); + } + + .badge-light { + color: #272B30; + background-color: #e9ecef; + } + + a.badge-light:hover, a.badge-light:focus { + color: #272B30; + background-color: #cbd3da; + } + + a.badge-light:focus, a.badge-light.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + box-shadow: 0 0 0 0.2rem rgba(233, 236, 239, 0.5); + } + + .badge-dark { + color: #fff; + background-color: #272B30; + } + + a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #101214; + } + + a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + -webkit-box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + box-shadow: 0 0 0 0.2rem rgba(39, 43, 48, 0.5); + } + + .jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #1c1e22; + border-radius: 0.3rem; + } + + @media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } + } + + .jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; + } + + .alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; + } + + .alert-heading { + color: inherit; + } + + .alert-link { + font-weight: 700; + } + + .alert-dismissible { + padding-right: 3.90625rem; + } + + .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; + } + + .alert-primary { + color: #1e2123; + background-color: #d8d9da; + border-color: #c8c9cb; + } + + .alert-primary hr { + border-top-color: #bbbcbf; + } + + .alert-primary .alert-link { + color: #060708; + } + + .alert-secondary { + color: #3f4447; + background-color: #e4e6e7; + border-color: #dadcde; + } + + .alert-secondary hr { + border-top-color: #cdcfd2; + } + + .alert-secondary .alert-link { + color: #272a2c; + } + + .alert-success { + color: #336633; + background-color: #e0f3e0; + border-color: #d3eed3; + } + + .alert-success hr { + border-top-color: #c1e7c1; + } + + .alert-success .alert-link { + color: #224422; + } + + .alert-info { + color: #2f6473; + background-color: #def2f8; + border-color: #d1edf6; + } + + .alert-info hr { + border-top-color: #bce5f2; + } + + .alert-info .alert-link { + color: #20454f; + } + + .alert-warning { + color: #814d03; + background-color: #feeacd; + border-color: #fde1b9; + } + + .alert-warning hr { + border-top-color: #fcd6a0; + } + + .alert-warning .alert-link { + color: #4f2f02; + } + + .alert-danger { + color: #7c312f; + background-color: #fcdfde; + border-color: #fad2d1; + } + + .alert-danger hr { + border-top-color: #f8bcba; + } + + .alert-danger .alert-link { + color: #572221; + } + + .alert-light { + color: #797b7c; + background-color: #fbfbfc; + border-color: #f9fafb; + } + + .alert-light hr { + border-top-color: #eaedf1; + } + + .alert-light .alert-link { + color: #606162; + } + + .alert-dark { + color: #141619; + background-color: #d4d5d6; + border-color: #c3c4c5; + } + + .alert-dark hr { + border-top-color: #b6b7b8; + } + + .alert-dark .alert-link { + color: black; + } + + @-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } + } + + @keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } + } + + .progress { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.703125rem; + background-color: #1c1e22; + border-radius: 0.25rem; + } + + .progress-bar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + color: #7A8288; + text-align: center; + white-space: nowrap; + background-color: #3A3F44; + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; + } + + @media (prefers-reduced-motion: reduce) { + .progress-bar { + -webkit-transition: none; + transition: none; + } + } + + .progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; + } + + .progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; + } + + @media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } + } + + .media { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + } + + .media-body { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + } + + .list-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + } + + .list-group-item-action { + width: 100%; + color: #fff; + text-align: inherit; + } + + .list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #fff; + text-decoration: none; + background-color: #3e444c; + } + + .list-group-item-action:active { + color: #aaa; + background-color: #e9ecef; + } + + .list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #32383e; + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + } + + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + } + + .list-group-item.disabled, .list-group-item:disabled { + color: #52575C; + pointer-events: none; + background-color: #32383e; + } + + .list-group-item.active { + z-index: 2; + color: #fff; + background-color: #3e444c; + border-color: rgba(0, 0, 0, 0.6); + } + + .list-group-horizontal { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + + .list-group-horizontal .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + + .list-group-horizontal .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + + .list-group-horizontal .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + + @media (min-width: 576px) { + .list-group-horizontal-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-sm .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + } + + @media (min-width: 768px) { + .list-group-horizontal-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-md .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + } + + @media (min-width: 992px) { + .list-group-horizontal-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-lg .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + } + + @media (min-width: 1200px) { + .list-group-horizontal-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl .list-group-item { + margin-right: -1px; + margin-bottom: 0; + } + .list-group-horizontal-xl .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl .list-group-item:last-child { + margin-right: 0; + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + } + + .list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; + } + + .list-group-flush .list-group-item:last-child { + margin-bottom: -1px; + } + + .list-group-flush:first-child .list-group-item:first-child { + border-top: 0; + } + + .list-group-flush:last-child .list-group-item:last-child { + margin-bottom: 0; + border-bottom: 0; + } + + .list-group-item-primary { + color: #1e2123; + background-color: #c8c9cb; + } + + .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #1e2123; + background-color: #bbbcbf; + } + + .list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #1e2123; + border-color: #1e2123; + } + + .list-group-item-secondary { + color: #3f4447; + background-color: #dadcde; + } + + .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #3f4447; + background-color: #cdcfd2; + } + + .list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #3f4447; + border-color: #3f4447; + } + + .list-group-item-success { + color: #336633; + background-color: #d3eed3; + } + + .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #336633; + background-color: #c1e7c1; + } + + .list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #336633; + border-color: #336633; + } + + .list-group-item-info { + color: #2f6473; + background-color: #d1edf6; + } + + .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #2f6473; + background-color: #bce5f2; + } + + .list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #2f6473; + border-color: #2f6473; + } + + .list-group-item-warning { + color: #814d03; + background-color: #fde1b9; + } + + .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #814d03; + background-color: #fcd6a0; + } + + .list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #814d03; + border-color: #814d03; + } + + .list-group-item-danger { + color: #7c312f; + background-color: #fad2d1; + } + + .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #7c312f; + background-color: #f8bcba; + } + + .list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #7c312f; + border-color: #7c312f; + } + + .list-group-item-light { + color: #797b7c; + background-color: #f9fafb; + } + + .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #797b7c; + background-color: #eaedf1; + } + + .list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #797b7c; + border-color: #797b7c; + } + + .list-group-item-dark { + color: #141619; + background-color: #c3c4c5; + } + + .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #141619; + background-color: #b6b7b8; + } + + .list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #141619; + border-color: #141619; + } + + .close { + float: right; + font-size: 1.40625rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; + } + + .close:hover { + color: #000; + text-decoration: none; + } + + .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; + } + + button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + } + + a.close.disabled { + pointer-events: none; + } + + .toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; + } + + .toast:not(:last-child) { + margin-bottom: 0.75rem; + } + + .toast.showing { + opacity: 1; + } + + .toast.show { + display: block; + opacity: 1; + } + + .toast.hide { + display: none; + } + + .toast-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #7A8288; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + } + + .toast-body { + padding: 0.75rem; + } + + .modal-open { + overflow: hidden; + } + + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } + + .modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; + } + + .modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; + } + + .modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); + } + + @media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + -webkit-transition: none; + transition: none; + } + } + + .modal.show .modal-dialog { + -webkit-transform: none; + transform: none; + } + + .modal-dialog-scrollable { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + max-height: calc(100% - 1rem); + } + + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; + } + + .modal-dialog-scrollable .modal-header, + .modal-dialog-scrollable .modal-footer { + -ms-flex-negative: 0; + flex-shrink: 0; + } + + .modal-dialog-scrollable .modal-body { + overflow-y: auto; + } + + .modal-dialog-centered { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - 1rem); + } + + .modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + content: ""; + } + + .modal-dialog-centered.modal-dialog-scrollable { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + height: 100%; + } + + .modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; + } + + .modal-dialog-centered.modal-dialog-scrollable::before { + content: none; + } + + .modal-content { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #32383e; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; + } + + .modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; + } + + .modal-backdrop.fade { + opacity: 0; + } + + .modal-backdrop.show { + opacity: 0.5; + } + + .modal-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; + } + + .modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; + } + + .modal-title { + margin-bottom: 0; + line-height: 1.5; + } + + .modal-body { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; + } + + .modal-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid rgba(0, 0, 0, 0.2); + border-bottom-right-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; + } + + .modal-footer > :not(:first-child) { + margin-left: .25rem; + } + + .modal-footer > :not(:last-child) { + margin-right: .25rem; + } + + .modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } + + @media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + } + .modal-sm { + max-width: 300px; + } + } + + @media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } + } + + @media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } + } + + .tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.8203125rem; + word-wrap: break-word; + opacity: 0; + } + + .tooltip.show { + opacity: 0.9; + } + + .tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; + } + + .tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; + } + + .bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; + } + + .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; + } + + .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; + } + + .bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; + } + + .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; + } + + .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; + } + + .bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; + } + + .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; + } + + .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; + } + + .bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; + } + + .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; + } + + .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; + } + + .tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; + } + + .popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.8203125rem; + word-wrap: break-word; + background-color: #32383e; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + } + + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; + } + + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + } + + .bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; + } + + .bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc((0.5rem + 1px) * -1); + } + + .bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); + } + + .bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #32383e; + } + + .bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; + } + + .bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; + } + + .bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); + } + + .bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #32383e; + } + + .bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; + } + + .bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc((0.5rem + 1px) * -1); + } + + .bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); + } + + .bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #32383e; + } + + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #2c3036; + } + + .bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; + } + + .bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; + } + + .bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); + } + + .bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #32383e; + } + + .popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 0.9375rem; + background-color: #2c3036; + border-bottom: 1px solid #202328; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); + } + + .popover-header:empty { + display: none; + } + + .popover-body { + padding: 0.5rem 0.75rem; + color: #aaa; + } + + .carousel { + position: relative; + } + + .carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y; + } + + .carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } + + .carousel-inner::after { + display: block; + clear: both; + content: ""; + } + + .carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; + } + + @media (prefers-reduced-motion: reduce) { + .carousel-item { + -webkit-transition: none; + transition: none; + } + } + + .carousel-item.active, + .carousel-item-next, + .carousel-item-prev { + display: block; + } + + .carousel-item-next:not(.carousel-item-left), + .active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%); + } + + .carousel-item-prev:not(.carousel-item-right), + .active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } + + .carousel-fade .carousel-item { + opacity: 0; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transform: none; + transform: none; + } + + .carousel-fade .carousel-item.active, + .carousel-fade .carousel-item-next.carousel-item-left, + .carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; + } + + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + -webkit-transition: 0s 0.6s opacity; + transition: 0s 0.6s opacity; + } + + @media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + -webkit-transition: none; + transition: none; + } + } + + .carousel-control-prev, + .carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + -webkit-transition: opacity 0.15s ease; + transition: opacity 0.15s ease; + } + + @media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + -webkit-transition: none; + transition: none; + } + } + + .carousel-control-prev:hover, .carousel-control-prev:focus, + .carousel-control-next:hover, + .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; + } + + .carousel-control-prev { + left: 0; + } + + .carousel-control-next { + right: 0; + } + + .carousel-control-prev-icon, + .carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; + } + + .carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e"); + } + + .carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e"); + } + + .carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; + } + + .carousel-indicators li { + -webkit-box-sizing: content-box; + box-sizing: content-box; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + -webkit-transition: opacity 0.6s ease; + transition: opacity 0.6s ease; + } + + @media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + -webkit-transition: none; + transition: none; + } + } + + .carousel-indicators .active { + opacity: 1; + } + + .carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + } + + @-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + .spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; + } + + .spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; + } + + @-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + } + } + + @keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + } + } + + .spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite; + } + + .spinner-grow-sm { + width: 1rem; + height: 1rem; + } + + .align-baseline { + vertical-align: baseline !important; + } + + .align-top { + vertical-align: top !important; + } + + .align-middle { + vertical-align: middle !important; + } + + .align-bottom { + vertical-align: bottom !important; + } + + .align-text-bottom { + vertical-align: text-bottom !important; + } + + .align-text-top { + vertical-align: text-top !important; + } + + .bg-primary { + background-color: #3A3F44 !important; + } + + a.bg-primary:hover, a.bg-primary:focus, + button.bg-primary:hover, + button.bg-primary:focus { + background-color: #232628 !important; + } + + .bg-secondary { + background-color: #7A8288 !important; + } + + a.bg-secondary:hover, a.bg-secondary:focus, + button.bg-secondary:hover, + button.bg-secondary:focus { + background-color: #62686d !important; + } + + .bg-success { + background-color: #62c462 !important; + } + + a.bg-success:hover, a.bg-success:focus, + button.bg-success:hover, + button.bg-success:focus { + background-color: #42b142 !important; + } + + .bg-info { + background-color: #5bc0de !important; + } + + a.bg-info:hover, a.bg-info:focus, + button.bg-info:hover, + button.bg-info:focus { + background-color: #31b0d5 !important; + } + + .bg-warning { + background-color: #f89406 !important; + } + + a.bg-warning:hover, a.bg-warning:focus, + button.bg-warning:hover, + button.bg-warning:focus { + background-color: #c67605 !important; + } + + .bg-danger { + background-color: #ee5f5b !important; + } + + a.bg-danger:hover, a.bg-danger:focus, + button.bg-danger:hover, + button.bg-danger:focus { + background-color: #e9322d !important; + } + + .bg-light { + background-color: #e9ecef !important; + } + + a.bg-light:hover, a.bg-light:focus, + button.bg-light:hover, + button.bg-light:focus { + background-color: #cbd3da !important; + } + + .bg-dark { + background-color: #272B30 !important; + } + + a.bg-dark:hover, a.bg-dark:focus, + button.bg-dark:hover, + button.bg-dark:focus { + background-color: #101214 !important; + } + + .bg-white { + background-color: #fff !important; + } + + .bg-transparent { + background-color: transparent !important; + } + + .border { + border: 1px solid #dee2e6 !important; + } + + .border-top { + border-top: 1px solid #dee2e6 !important; + } + + .border-right { + border-right: 1px solid #dee2e6 !important; + } + + .border-bottom { + border-bottom: 1px solid #dee2e6 !important; + } + + .border-left { + border-left: 1px solid #dee2e6 !important; + } + + .border-0 { + border: 0 !important; + } + + .border-top-0 { + border-top: 0 !important; + } + + .border-right-0 { + border-right: 0 !important; + } + + .border-bottom-0 { + border-bottom: 0 !important; + } + + .border-left-0 { + border-left: 0 !important; + } + + .border-primary { + border-color: #3A3F44 !important; + } + + .border-secondary { + border-color: #7A8288 !important; + } + + .border-success { + border-color: #62c462 !important; + } + + .border-info { + border-color: #5bc0de !important; + } + + .border-warning { + border-color: #f89406 !important; + } + + .border-danger { + border-color: #ee5f5b !important; + } + + .border-light { + border-color: #e9ecef !important; + } + + .border-dark { + border-color: #272B30 !important; + } + + .border-white { + border-color: #fff !important; + } + + .rounded-sm { + border-radius: 0.2rem !important; + } + + .rounded { + border-radius: 0.25rem !important; + } + + .rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; + } + + .rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; + } + + .rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + + .rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; + } + + .rounded-lg { + border-radius: 0.3rem !important; + } + + .rounded-circle { + border-radius: 50% !important; + } + + .rounded-pill { + border-radius: 50rem !important; + } + + .rounded-0 { + border-radius: 0 !important; + } + + .clearfix::after { + display: block; + clear: both; + content: ""; + } + + .d-none { + display: none !important; + } + + .d-inline { + display: inline !important; + } + + .d-inline-block { + display: inline-block !important; + } + + .d-block { + display: block !important; + } + + .d-table { + display: table !important; + } + + .d-table-row { + display: table-row !important; + } + + .d-table-cell { + display: table-cell !important; + } + + .d-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + + .d-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + + @media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + } + + @media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + } + + @media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + } + + @media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + } + + @media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + } + + .embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; + } + + .embed-responsive::before { + display: block; + content: ""; + } + + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + } + + .embed-responsive-21by9::before { + padding-top: 42.8571428571%; + } + + .embed-responsive-16by9::before { + padding-top: 56.25%; + } + + .embed-responsive-4by3::before { + padding-top: 75%; + } + + .embed-responsive-1by1::before { + padding-top: 100%; + } + + .flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + + .flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + + .flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + + .flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + + .flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + + .flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + + .flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + + .flex-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + + .flex-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + + .flex-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + + .flex-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + + .flex-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + + .justify-content-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + + .justify-content-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + + .justify-content-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + + .justify-content-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + + .justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + + .align-items-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + + .align-items-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + + .align-items-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + + .align-items-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + + .align-items-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + + .align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + + .align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + + .align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + + .align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + + .align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + + .align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + + .align-self-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + + .align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + + .align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + + .align-self-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + + .align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + + .align-self-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } + + @media (min-width: 576px) { + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } + } + + @media (min-width: 768px) { + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-md-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } + } + + @media (min-width: 992px) { + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } + } + + @media (min-width: 1200px) { + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } + } + + .float-left { + float: left !important; + } + + .float-right { + float: right !important; + } + + .float-none { + float: none !important; + } + + @media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } + } + + @media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } + } + + @media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } + } + + @media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } + } + + .overflow-auto { + overflow: auto !important; + } + + .overflow-hidden { + overflow: hidden !important; + } + + .position-static { + position: static !important; + } + + .position-relative { + position: relative !important; + } + + .position-absolute { + position: absolute !important; + } + + .position-fixed { + position: fixed !important; + } + + .position-sticky { + position: -webkit-sticky !important; + position: sticky !important; + } + + .fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; + } + + .fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + } + + @supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + } + + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; + } + + .sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; + } + + .shadow-sm { + -webkit-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; + } + + .shadow { + -webkit-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; + } + + .shadow-lg { + -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; + } + + .shadow-none { + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + + .w-25 { + width: 25% !important; + } + + .w-50 { + width: 50% !important; + } + + .w-75 { + width: 75% !important; + } + + .w-100 { + width: 100% !important; + } + + .w-auto { + width: auto !important; + } + + .h-25 { + height: 25% !important; + } + + .h-50 { + height: 50% !important; + } + + .h-75 { + height: 75% !important; + } + + .h-100 { + height: 100% !important; + } + + .h-auto { + height: auto !important; + } + + .mw-100 { + max-width: 100% !important; + } + + .mh-100 { + max-height: 100% !important; + } + + .min-vw-100 { + min-width: 100vw !important; + } + + .min-vh-100 { + min-height: 100vh !important; + } + + .vw-100 { + width: 100vw !important; + } + + .vh-100 { + height: 100vh !important; + } + + .stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); + } + + .m-0 { + margin: 0 !important; + } + + .mt-0, + .my-0 { + margin-top: 0 !important; + } + + .mr-0, + .mx-0 { + margin-right: 0 !important; + } + + .mb-0, + .my-0 { + margin-bottom: 0 !important; + } + + .ml-0, + .mx-0 { + margin-left: 0 !important; + } + + .m-1 { + margin: 0.25rem !important; + } + + .mt-1, + .my-1 { + margin-top: 0.25rem !important; + } + + .mr-1, + .mx-1 { + margin-right: 0.25rem !important; + } + + .mb-1, + .my-1 { + margin-bottom: 0.25rem !important; + } + + .ml-1, + .mx-1 { + margin-left: 0.25rem !important; + } + + .m-2 { + margin: 0.5rem !important; + } + + .mt-2, + .my-2 { + margin-top: 0.5rem !important; + } + + .mr-2, + .mx-2 { + margin-right: 0.5rem !important; + } + + .mb-2, + .my-2 { + margin-bottom: 0.5rem !important; + } + + .ml-2, + .mx-2 { + margin-left: 0.5rem !important; + } + + .m-3 { + margin: 1rem !important; + } + + .mt-3, + .my-3 { + margin-top: 1rem !important; + } + + .mr-3, + .mx-3 { + margin-right: 1rem !important; + } + + .mb-3, + .my-3 { + margin-bottom: 1rem !important; + } + + .ml-3, + .mx-3 { + margin-left: 1rem !important; + } + + .m-4 { + margin: 1.5rem !important; + } + + .mt-4, + .my-4 { + margin-top: 1.5rem !important; + } + + .mr-4, + .mx-4 { + margin-right: 1.5rem !important; + } + + .mb-4, + .my-4 { + margin-bottom: 1.5rem !important; + } + + .ml-4, + .mx-4 { + margin-left: 1.5rem !important; + } + + .m-5 { + margin: 3rem !important; + } + + .mt-5, + .my-5 { + margin-top: 3rem !important; + } + + .mr-5, + .mx-5 { + margin-right: 3rem !important; + } + + .mb-5, + .my-5 { + margin-bottom: 3rem !important; + } + + .ml-5, + .mx-5 { + margin-left: 3rem !important; + } + + .p-0 { + padding: 0 !important; + } + + .pt-0, + .py-0 { + padding-top: 0 !important; + } + + .pr-0, + .px-0 { + padding-right: 0 !important; + } + + .pb-0, + .py-0 { + padding-bottom: 0 !important; + } + + .pl-0, + .px-0 { + padding-left: 0 !important; + } + + .p-1 { + padding: 0.25rem !important; + } + + .pt-1, + .py-1 { + padding-top: 0.25rem !important; + } + + .pr-1, + .px-1 { + padding-right: 0.25rem !important; + } + + .pb-1, + .py-1 { + padding-bottom: 0.25rem !important; + } + + .pl-1, + .px-1 { + padding-left: 0.25rem !important; + } + + .p-2 { + padding: 0.5rem !important; + } + + .pt-2, + .py-2 { + padding-top: 0.5rem !important; + } + + .pr-2, + .px-2 { + padding-right: 0.5rem !important; + } + + .pb-2, + .py-2 { + padding-bottom: 0.5rem !important; + } + + .pl-2, + .px-2 { + padding-left: 0.5rem !important; + } + + .p-3 { + padding: 1rem !important; + } + + .pt-3, + .py-3 { + padding-top: 1rem !important; + } + + .pr-3, + .px-3 { + padding-right: 1rem !important; + } + + .pb-3, + .py-3 { + padding-bottom: 1rem !important; + } + + .pl-3, + .px-3 { + padding-left: 1rem !important; + } + + .p-4 { + padding: 1.5rem !important; + } + + .pt-4, + .py-4 { + padding-top: 1.5rem !important; + } + + .pr-4, + .px-4 { + padding-right: 1.5rem !important; + } + + .pb-4, + .py-4 { + padding-bottom: 1.5rem !important; + } + + .pl-4, + .px-4 { + padding-left: 1.5rem !important; + } + + .p-5 { + padding: 3rem !important; + } + + .pt-5, + .py-5 { + padding-top: 3rem !important; + } + + .pr-5, + .px-5 { + padding-right: 3rem !important; + } + + .pb-5, + .py-5 { + padding-bottom: 3rem !important; + } + + .pl-5, + .px-5 { + padding-left: 3rem !important; + } + + .m-n1 { + margin: -0.25rem !important; + } + + .mt-n1, + .my-n1 { + margin-top: -0.25rem !important; + } + + .mr-n1, + .mx-n1 { + margin-right: -0.25rem !important; + } + + .mb-n1, + .my-n1 { + margin-bottom: -0.25rem !important; + } + + .ml-n1, + .mx-n1 { + margin-left: -0.25rem !important; + } + + .m-n2 { + margin: -0.5rem !important; + } + + .mt-n2, + .my-n2 { + margin-top: -0.5rem !important; + } + + .mr-n2, + .mx-n2 { + margin-right: -0.5rem !important; + } + + .mb-n2, + .my-n2 { + margin-bottom: -0.5rem !important; + } + + .ml-n2, + .mx-n2 { + margin-left: -0.5rem !important; + } + + .m-n3 { + margin: -1rem !important; + } + + .mt-n3, + .my-n3 { + margin-top: -1rem !important; + } + + .mr-n3, + .mx-n3 { + margin-right: -1rem !important; + } + + .mb-n3, + .my-n3 { + margin-bottom: -1rem !important; + } + + .ml-n3, + .mx-n3 { + margin-left: -1rem !important; + } + + .m-n4 { + margin: -1.5rem !important; + } + + .mt-n4, + .my-n4 { + margin-top: -1.5rem !important; + } + + .mr-n4, + .mx-n4 { + margin-right: -1.5rem !important; + } + + .mb-n4, + .my-n4 { + margin-bottom: -1.5rem !important; + } + + .ml-n4, + .mx-n4 { + margin-left: -1.5rem !important; + } + + .m-n5 { + margin: -3rem !important; + } + + .mt-n5, + .my-n5 { + margin-top: -3rem !important; + } + + .mr-n5, + .mx-n5 { + margin-right: -3rem !important; + } + + .mb-n5, + .my-n5 { + margin-bottom: -3rem !important; + } + + .ml-n5, + .mx-n5 { + margin-left: -3rem !important; + } + + .m-auto { + margin: auto !important; + } + + .mt-auto, + .my-auto { + margin-top: auto !important; + } + + .mr-auto, + .mx-auto { + margin-right: auto !important; + } + + .mb-auto, + .my-auto { + margin-bottom: auto !important; + } + + .ml-auto, + .mx-auto { + margin-left: auto !important; + } + + @media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } + } + + @media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } + } + + @media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } + } + + @media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } + } + + .text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; + } + + .text-justify { + text-align: justify !important; + } + + .text-wrap { + white-space: normal !important; + } + + .text-nowrap { + white-space: nowrap !important; + } + + .text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .text-left { + text-align: left !important; + } + + .text-right { + text-align: right !important; + } + + .text-center { + text-align: center !important; + } + + @media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } + } + + @media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } + } + + @media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } + } + + @media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } + } + + .text-lowercase { + text-transform: lowercase !important; + } + + .text-uppercase { + text-transform: uppercase !important; + } + + .text-capitalize { + text-transform: capitalize !important; + } + + .font-weight-light { + font-weight: 300 !important; + } + + .font-weight-lighter { + font-weight: lighter !important; + } + + .font-weight-normal { + font-weight: 400 !important; + } + + .font-weight-bold { + font-weight: 700 !important; + } + + .font-weight-bolder { + font-weight: bolder !important; + } + + .font-italic { + font-style: italic !important; + } + + .text-white { + color: #fff !important; + } + + .text-primary { + color: #3A3F44 !important; + } + + a.text-primary:hover, a.text-primary:focus { + color: #17191b !important; + } + + .text-secondary { + color: #7A8288 !important; + } + + a.text-secondary:hover, a.text-secondary:focus { + color: #565b60 !important; + } + + .text-success { + color: #62c462 !important; + } + + a.text-success:hover, a.text-success:focus { + color: #3b9e3b !important; + } + + .text-info { + color: #5bc0de !important; + } + + a.text-info:hover, a.text-info:focus { + color: #28a1c5 !important; + } + + .text-warning { + color: #f89406 !important; + } + + a.text-warning:hover, a.text-warning:focus { + color: #ad6704 !important; + } + + .text-danger { + color: #ee5f5b !important; + } + + a.text-danger:hover, a.text-danger:focus { + color: #e51d18 !important; + } + + .text-light { + color: #e9ecef !important; + } + + a.text-light:hover, a.text-light:focus { + color: #bdc6cf !important; + } + + .text-dark { + color: #272B30 !important; + } + + a.text-dark:hover, a.text-dark:focus { + color: #050506 !important; + } + + .text-body { + color: #aaa !important; + } + + .text-muted { + color: #7A8288 !important; + } + + .text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; + } + + .text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; + } + + .text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } + + .text-decoration-none { + text-decoration: none !important; + } + + .text-break { + word-break: break-word !important; + overflow-wrap: break-word !important; + } + + .text-reset { + color: inherit !important; + } + + .visible { + visibility: visible !important; + } + + .invisible { + visibility: hidden !important; + } + + @media print { + *, + *::before, + *::after { + text-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: rgba(0, 0, 0, 0.6); + } + .table .thead-dark th { + color: inherit; + border-color: rgba(0, 0, 0, 0.6); + } + } + + .navbar { + border: 1px solid rgba(0, 0, 0, 0.6); + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + } + + .navbar .container { + padding: 0; + } + + .navbar .navbar-toggler { + border-color: rgba(0, 0, 0, 0.6); + } + + .navbar-fixed-top { + border-width: 0 0 1px 0; + } + + .navbar-fixed-bottom { + border-width: 1px 0 0 0; + } + + .navbar .nav-link { + padding: 1rem; + border-left: 1px solid rgba(255, 255, 255, 0.1); + border-right: 1px solid rgba(0, 0, 0, 0.2); + } + + .navbar .nav-link:hover, .navbar .nav-link:focus { + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + border-left: 1px solid rgba(0, 0, 0, 0.2); + } + + .navbar-brand { + padding: 0.75rem 1rem calc(54px - 0.75rem - 30px); + margin-right: 0; + border-right: 1px solid rgba(0, 0, 0, 0.2); + } + + .navbar .nav-item.active .nav-link { + background-color: rgba(0, 0, 0, 0.3); + border-left: 1px solid rgba(0, 0, 0, 0.2); + } + + .navbar-nav .nav-item + .nav-item { + margin-left: 0; + } + + .navbar.bg-light { + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); + } + + .navbar.bg-light .nav-link:hover, .navbar.bg-light .nav-link:focus { + background-image: -webkit-gradient(linear, left top, left bottom, from(#4e5458), color-stop(40%, #565b60), to(#5b6165)); + background-image: linear-gradient(#4e5458, #565b60 40%, #5b6165); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + border-left: 1px solid rgba(0, 0, 0, 0.2); + } + + @media (max-width: 576px) { + .navbar-expand-sm .navbar-brand, + .navbar-expand-sm .nav-link { + border: none !important; + } + } + + @media (max-width: 768px) { + .navbar-expand-md .navbar-brand, + .navbar-expand-md .nav-link { + border: none !important; + } + } + + @media (max-width: 992px) { + .navbar-expand-lg .navbar-brand, + .navbar-expand-lg .nav-link { + border: none !important; + } + } + + .btn { + border-color: rgba(0, 0, 0, 0.6); + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + } + + .btn:not([disabled]):not(.disabled).active, .btn.disabled { + border-color: rgba(0, 0, 0, 0.6); + -webkit-box-shadow: none; + box-shadow: none; + } + + .btn:hover, .btn:focus, .btn:not([disabled]):not(.disabled):active, .btn:not([disabled]):not(.disabled):active:hover, .btn:not([disabled]):not(.disabled).active:hover { + border-color: rgba(0, 0, 0, 0.6); + } + + .btn-primary { + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-primary:not([disabled]):not(.disabled):hover, .btn-primary:not([disabled]):not(.disabled):focus, .btn-primary:not([disabled]):not(.disabled):active:hover, .btn-primary:not([disabled]):not(.disabled).active:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-secondary { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8a9196), color-stop(60%, #7A8288), to(#70787d)); + background-image: linear-gradient(#8a9196, #7A8288 60%, #70787d); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-secondary:not([disabled]):not(.disabled):hover, .btn-secondary:not([disabled]):not(.disabled):focus, .btn-secondary:not([disabled]):not(.disabled):active, .btn-secondary:not([disabled]):not(.disabled).active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#4e5458), color-stop(40%, #565b60), to(#5b6165)); + background-image: linear-gradient(#4e5458, #565b60 40%, #5b6165); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-success { + background-image: -webkit-gradient(linear, left top, left bottom, from(#78cc78), color-stop(60%, #62c462), to(#53be53)); + background-image: linear-gradient(#78cc78, #62c462 60%, #53be53); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + color: #fff; + } + + .btn-success:not([disabled]):not(.disabled):hover, .btn-success:not([disabled]):not(.disabled):focus, .btn-success:not([disabled]):not(.disabled):active, .btn-success:not([disabled]):not(.disabled).active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#379337), color-stop(40%, #3b9e3b), to(#3ea63e)); + background-image: linear-gradient(#379337, #3b9e3b 40%, #3ea63e); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-info { + background-image: -webkit-gradient(linear, left top, left bottom, from(#74cae3), color-stop(60%, #5bc0de), to(#4ab9db)); + background-image: linear-gradient(#74cae3, #5bc0de 60%, #4ab9db); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + color: #fff; + } + + .btn-info:not([disabled]):not(.disabled):hover, .btn-info:not([disabled]):not(.disabled):focus, .btn-info:not([disabled]):not(.disabled):active, .btn-info:not([disabled]):not(.disabled).active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#2596b8), color-stop(40%, #28a1c5), to(#29a8cd)); + background-image: linear-gradient(#2596b8, #28a1c5 40%, #29a8cd); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-warning { + background-image: -webkit-gradient(linear, left top, left bottom, from(#faa123), color-stop(60%, #f89406), to(#e48806)); + background-image: linear-gradient(#faa123, #f89406 60%, #e48806); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + color: #fff; + } + + .btn-warning:not([disabled]):not(.disabled):hover, .btn-warning:not([disabled]):not(.disabled):focus, .btn-warning:not([disabled]):not(.disabled):active, .btn-warning:not([disabled]):not(.disabled).active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#9e5f04), color-stop(40%, #ad6704), to(#b76d04)); + background-image: linear-gradient(#9e5f04, #ad6704 40%, #b76d04); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-danger { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f17a77), color-stop(60%, #ee5f5b), to(#ec4d49)); + background-image: linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-danger:not([disabled]):not(.disabled):hover, .btn-danger:not([disabled]):not(.disabled):focus, .btn-danger:not([disabled]):not(.disabled):active, .btn-danger:not([disabled]):not(.disabled).active { + background-image: -webkit-gradient(linear, left top, left bottom, from(#d71c16), color-stop(40%, #e51d18), to(#e8241f)); + background-image: linear-gradient(#d71c16, #e51d18 40%, #e8241f); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .btn-link, + .btn-link:hover { + border-color: transparent; + } + + .btn-group .btn.active, + .btn-group-vertical .btn.active { + border-color: rgba(0, 0, 0, 0.6); + } + + h1, h2, h3, h4, h5, h6 { + text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3); + } + + .table-primary, .table-secondary, .table-success, .table-info, .table-warning, .table-danger { + color: #fff; + } + + .table-primary, + .table-primary > th, + .table-primary > td { + background-color: #3A3F44; + } + + .table-secondary, + .table-secondary > th, + .table-secondary > td { + background-color: #7A8288; + } + + .table-light, + .table-light > th, + .table-light > td { + background-color: #e9ecef; + } + + .table-dark, + .table-dark > th, + .table-dark > td { + background-color: #272B30; + } + + .table-success, + .table-success > th, + .table-success > td { + background-color: #62c462; + } + + .table-info, + .table-info > th, + .table-info > td { + background-color: #5bc0de; + } + + .table-danger, + .table-danger > th, + .table-danger > td { + background-color: #ee5f5b; + } + + .table-warning, + .table-warning > th, + .table-warning > td { + background-color: #f89406; + } + + .table-active, + .table-active > th, + .table-active > td { + background-color: rgba(255, 255, 255, 0.075); + } + + .table-hover .table-primary:hover, .table-hover .table-primary:hover > th, .table-hover .table-primary:hover > td { + background-color: #2e3236; + } + + .table-hover .table-secondary:hover, .table-hover .table-secondary:hover > th, .table-hover .table-secondary:hover > td { + background-color: #6e757b; + } + + .table-hover .table-light:hover, .table-hover .table-light:hover > th, .table-hover .table-light:hover > td { + background-color: #dadfe4; + } + + .table-hover .table-dark:hover, .table-hover .table-dark:hover > th, .table-hover .table-dark:hover > td { + background-color: #1c1e22; + } + + .table-hover .table-success:hover, .table-hover .table-success:hover > th, .table-hover .table-success:hover > td { + background-color: #4fbd4f; + } + + .table-hover .table-info:hover, .table-hover .table-info:hover > th, .table-hover .table-info:hover > td { + background-color: #46b8da; + } + + .table-hover .table-danger:hover, .table-hover .table-danger:hover > th, .table-hover .table-danger:hover > td { + background-color: #ec4844; + } + + .table-hover .table-warning:hover, .table-hover .table-warning:hover > th, .table-hover .table-warning:hover > td { + background-color: #df8505; + } + + .table-hover .table-active:hover, .table-hover .table-active:hover > th, .table-hover .table-active:hover > td { + background-color: rgba(255, 255, 255, 0.075); + } + + legend { + color: #fff; + } + + .input-group-addon { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8a9196), color-stop(60%, #7A8288), to(#70787d)); + background-image: linear-gradient(#8a9196, #7A8288 60%, #70787d); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + color: #fff; + } + + .nav-tabs .nav-link, + .nav-tabs .nav-link:hover { + color: #fff; + } + + .nav-pills .nav-link { + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + border: 1px solid rgba(0, 0, 0, 0.6); + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + color: #fff; + } + + .nav-pills .nav-link:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .nav-pills .nav-link.active, + .nav-pills .nav-link:hover { + background-color: transparent; + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .nav-pills .nav-link.disabled, + .nav-pills .nav-link.disabled:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + color: #7A8288; + } + + .pagination .page-link { + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .pagination .page-link:hover { + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + text-decoration: none; + } + + .pagination .page-item.active .page-link { + background-image: -webkit-gradient(linear, left top, left bottom, from(#101112), color-stop(40%, #17191b), to(#1b1e20)); + background-image: linear-gradient(#101112, #17191b 40%, #1b1e20); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .pagination .page-item.disabled .page-link { + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .breadcrumb { + border: 1px solid rgba(0, 0, 0, 0.6); + text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3); + background-color: transparent; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484e55), color-stop(60%, #3A3F44), to(#313539)); + background-image: linear-gradient(#484e55, #3A3F44 60%, #313539); + background-repeat: no-repeat; + -webkit-filter: none; + filter: none; + } + + .breadcrumb a, + .breadcrumb a:hover { + color: #fff; + } + + .alert .close { + color: #000; + text-decoration: none; + } + + .alert { + border: none; + color: #fff; + } + + .alert a, + .alert .alert-link { + color: #fff; + text-decoration: underline; + } + + .alert-primary { + background-color: #3A3F44; + } + + .alert-secondary { + background-color: #7A8288; + } + + .alert-success { + background-color: #62c462; + } + + .alert-info { + background-color: #5bc0de; + } + + .alert-warning { + background-color: #f89406; + } + + .alert-danger { + background-color: #ee5f5b; + } + + .alert-light { + background-color: #e9ecef; + } + + .alert-dark { + background-color: #272B30; + } + + .alert-light, + .alert-light a:not(.btn), + .alert-light .alert-link { + color: #272B30; + } + + .badge-success, .badge-warning, .badge-info { + color: #fff; + } + + .jumbotron { + border: 1px solid rgba(0, 0, 0, 0.6); + } + + .list-group-item:hover { + background-color: #1c1e22; + } \ No newline at end of file diff --git a/toolbar-ui-angular/src/browserslist b/toolbar-ui-angular/src/browserslist new file mode 100644 index 0000000..37371cb --- /dev/null +++ b/toolbar-ui-angular/src/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/toolbar-ui-angular/src/environments/environment.prod.ts b/toolbar-ui-angular/src/environments/environment.prod.ts new file mode 100644 index 0000000..e72e7e6 --- /dev/null +++ b/toolbar-ui-angular/src/environments/environment.prod.ts @@ -0,0 +1,20 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export const environment = { + production: true +}; diff --git a/toolbar-ui-angular/src/environments/environment.ts b/toolbar-ui-angular/src/environments/environment.ts new file mode 100644 index 0000000..621a8f9 --- /dev/null +++ b/toolbar-ui-angular/src/environments/environment.ts @@ -0,0 +1,33 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/toolbar-ui-angular/src/index.html b/toolbar-ui-angular/src/index.html new file mode 100644 index 0000000..1b26994 --- /dev/null +++ b/toolbar-ui-angular/src/index.html @@ -0,0 +1,25 @@ + + + + + + + FDC3 Demo Toolbar + + + + + + + + + diff --git a/toolbar-ui-angular/src/karma.conf.js b/toolbar-ui-angular/src/karma.conf.js new file mode 100644 index 0000000..2cd8cbd --- /dev/null +++ b/toolbar-ui-angular/src/karma.conf.js @@ -0,0 +1,31 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage/toolbar-ui-ina'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/toolbar-ui-angular/src/main.ts b/toolbar-ui-angular/src/main.ts new file mode 100644 index 0000000..566d860 --- /dev/null +++ b/toolbar-ui-angular/src/main.ts @@ -0,0 +1,29 @@ +/** + * Copyright © 2014-2019 Tick42 OOD + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/toolbar-ui-angular/src/mock-data/apps.json b/toolbar-ui-angular/src/mock-data/apps.json new file mode 100644 index 0000000..6b70bf5 --- /dev/null +++ b/toolbar-ui-angular/src/mock-data/apps.json @@ -0,0 +1,107 @@ +[ + { + "appId": "clientcontact", + "name": "clientcontact", + "version": "", + "title": "Client Contact", + "tooltip": "", + "description": "", + "images": [], + "contactEmail": "", + "supportEmail": "", + "publisher": "", + "icons": [ + { + "icon": "https://enterprise-demos.tick42.com/resources/icons/client-contact.ico" + } + ], + "customConfig": [], + "intents": [], + "manifestType": "org.finos.fdc3.demo.host", + "manifest": "{\n \"type\": \"host\",\n \"hostType\": \"Glue42\",\n \"hostName\": \"Glue42\",\n \"hostManifest\": \"\"\n }", + "provider": { + "name": "Glue Desktop", + "apiUrl": "http://localhost:3000", + "email": "", + "password": "", + "authUrl": "", + "status": "connected" + } + }, + { + "appId": "Glue42 Website", + "name": "Glue42 Website", + "version": "1.0.0", + "title": "Glue42 Website", + "tooltip": "Glue42 Website", + "description": "Glue42 Website", + "images": [], + "contactEmail": "", + "supportEmail": "", + "publisher": "Glue42", + "icons": [ + { + "icon": "../resources/icons/glue42.png" + } + ], + "customConfig": [ + { + "name": "string", + "value": "string" + } + ], + "intents": [ + { + "name": "show-glue42-com" + } + ], + "manifestType": "org.finos.fdc3.demo", + "manifest": "{\"type\":\"browser\",\"url\":\"https://glue42.com\"}", + "provider": { + "name": "Dock01 App Directory", + "apiUrl": "http://localhost:8080/appd/v1", + "email": "georgi.georgiev@tick42.com", + "password": "password", + "authUrl": "http://localhost:8080/appd/user/authenticate", + "status": "connected" + } + }, + { + "appId": "Excel", + "name": "Excel", + "version": "1.0.0", + "title": "Excel", + "tooltip": "Excel", + "description": "Microsoft Excel", + "images": [], + "contactEmail": "", + "supportEmail": "", + "publisher": "Tick42", + "icons": [ + { + "icon": "https://cdn.freebiesupply.com/logos/large/2x/microsoft-excel-2013-logo-png-transparent.png" + } + ], + "customConfig": [ + { + "name": "string", + "value": "string" + } + ], + "intents": [ + { + "name": "open-sheets" + } + ], + "manifestType": "org.finos.fdc3.demo", + "manifest": "{\"type\":\"exe\",\"exePath\":\"C:\\\\Program Files (x86)\\\\Microsoft Office\\\\root\\\\Office16\\\\EXCEL.EXE\"}", + "provider": { + "name": "Dock01 App Directory", + "apiUrl": "http://localhost:8080/appd/v1", + "email": "georgi.georgiev@tick42.com", + "password": "password", + "authUrl": "http://localhost:8080/appd/user/authenticate", + "status": "connected" + } + } +] diff --git a/toolbar-ui-angular/src/mock-data/logs.json b/toolbar-ui-angular/src/mock-data/logs.json new file mode 100644 index 0000000..06e0b85 --- /dev/null +++ b/toolbar-ui-angular/src/mock-data/logs.json @@ -0,0 +1,78 @@ +[ + { + "timestamp": 1550741730800, + "type": "ERROR", + "origin": "Toolbar", + "message": { + "message": "request to http://localhost:8080/appd/user/authenticate failed, reason: connect ECONNREFUSED 127.0.0.1:8080", + "type": "system", + "errno": "ECONNREFUSED", + "code": "ECONNREFUSED", + "name": "FetchError" + }, + "show": true + }, + { + "timestamp": 1550741730507, + "type": "ERROR", + "origin": "Toolbar", + "message": { + "message": "request to http://localhost:8080/appd/user/authenticate failed, reason: connect ECONNREFUSED 127.0.0.1:8080", + "type": "system", + "errno": "ECONNREFUSED", + "code": "ECONNREFUSED", + "name": "FetchError" + }, + "show": true + }, + { + "timestamp": 1550741730507, + "type": "INFO", + "origin": "Toolbar", + "message": "Toolbar window ready.", + "show": true + }, + { + "timestamp": 1550721730507, + "type": "INFO", + "origin": "Electron", + "message": "Electron ready.", + "show": true + }, + { + "timestamp": 1550741730507, + "type": "INFO", + "origin": "Toolbar", + "message": "Will add provider \"Glue Desktop\" with URL \"http://localhost:3000\"", + "show": true + }, + { + "timestamp": 1550741730507, + "type": "INFO", + "origin": "Toolbar", + "message": "Will add provider \"Dock01 App Directory\" with URL \"http://localhost:8080/appd/v1\"", + "show": true + }, + { + "timestamp": 1550741730500, + "type": "INFO", + "origin": "Toolbar", + "message": "Will add provider \"Glue Desktop\" with URL http://localhost:3000", + "show": true + }, + { + "timestamp": 1550741730500, + "type": "INFO", + "origin": "Toolbar", + "message": "Will add provider \"Dock01 App Directory\" with URL http://localhost:8080/appd/v1", + "show": true + }, + { + "timestamp": 1550742052852, + "type": "INFO", + "origin": "Angular", + "message": "Showing app info for \"Client List\"", + "1CanvasDummy": "", + "show": true + } +] diff --git a/toolbar-ui-angular/src/mock-data/providers.json b/toolbar-ui-angular/src/mock-data/providers.json new file mode 100644 index 0000000..89c3979 --- /dev/null +++ b/toolbar-ui-angular/src/mock-data/providers.json @@ -0,0 +1,16 @@ +[ + { + "name": "Glue Desktop", + "apiUrl": "http://localhost:3000", + "email": "", + "password": "", + "authUrl": "" + }, + { + "name": "Dock01 App Directory", + "apiUrl": "http://localhost:8080/appd/v1", + "email": "georgi.georgiev@tick42.com", + "password": "password", + "authUrl": "http://localhost:8080/appd/user/authenticate" + } +] diff --git a/toolbar-ui-angular/src/polyfills.ts b/toolbar-ui-angular/src/polyfills.ts new file mode 100644 index 0000000..75d6393 --- /dev/null +++ b/toolbar-ui-angular/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags.ts'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/toolbar-ui-angular/src/styles.scss b/toolbar-ui-angular/src/styles.scss new file mode 100644 index 0000000..5f0752c --- /dev/null +++ b/toolbar-ui-angular/src/styles.scss @@ -0,0 +1,196 @@ +/* Copyright © 2014-2019 Tick42 OOD + SPDX-License-Identifier: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. */ + +//Variables +$dark: rgb(25, 27, 31); +$input-bg: #4c525d; +$border-radius: 1px; +$light: #f3f3f3; +$scrollbar-bg: rgba(25, 27, 31, .3); +$card-header: lighten($dark,5%); +body { + overflow: hidden; +} + +/* Custom scrollbar - start */ + +::-webkit-scrollbar-track { + border-radius: $border-radius; + background-color: transparent; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; + background-color: $scrollbar-bg; +} + +::-webkit-scrollbar-thumb { + border-radius: $border-radius; + background-color: $dark; +} + +//Navbar +.navbar { + flex-flow: row nowrap; + z-index: 10; + position: fixed; + top: 0; + height: 68px; + left: 0; + right: 0; + box-shadow: 0 2px 6px -1px rgba(0, 0, 0, .5); + >.btn { + flex-basis: 74px; + } +} + +.toolbar-apps-container { + flex: row nowrap; + width: calc(100vw - 200px); + height: 2.75rem; + overflow: hidden; + overflow-x: auto; + flex-flow: row nowrap; + display: flex; + justify-content: center; + .btn { + margin-right: .5rem; + flex: 0 0 56px; + align-self: center; + &.btn-link { + padding: 0; + } + } +} + +//Buttons +.btn { + &.btn-link { + &.active { + background-color: $dark; + } + &:not([disabled]):not(.disabled):active, + &:active, + &:focus-within, + &:focus { + border-color: transparent; + outline: none; + } + } + border-radius: $border-radius; +} + +.status-btn { + width: 3rem; + align-items: center; +} + +.close { + color: $light; +} + +//Vieport +.viewport { + position: relative; + top: 68px; + overflow: auto; + height: calc(100vh - 68px); +} + +//Containers + +.logs-container { + .border-left { + border-left-width: 4px !important; + } +} + +.app-list-container { + height: calc(100vh - 138px); + overflow: auto; + position: relative; + top: 138px; +} + +.filter-container { + position: fixed; + top: 69px; + width: 100%; + z-index: 10; +} + +.app-icon { + width: 30px; + height: 30px; + &.app-icon { + background-color: #fff; + } +} + +.logs-container, .app-directories-container { + max-height: 350px; + overflow: auto; + min-height: 50px; +} + +//Modals +.modal-dialog-scrollable { + &.modal-dialog { + max-width: 90vw; + } + .modal-content { + max-height: 90vh; + overflow: hidden; + } + .modal-header, + .modal-footer { + flex-shrink: 0; + } + .modal-body { + overflow-y: auto; + } +} + +//Custom control +.pointer, +.custom-control-label { + cursor: pointer; +} + +.custom-control { + overflow: hidden; + text-overflow: ellipsis; +} + +.custom-control-label { + white-space: pre; +} + +.custom-control-input:checked~.custom-control-label::before { + border-color: $dark; + background-color: $input-bg; +} +.card-header { + background: $card-header; +} + + +//Tooltip + +.info-tooltip + .tooltip { + &.bs-tooltip-left { + top:1rem !important; + .arrow { + top: calc(30% - .4rem); + } + } +} diff --git a/toolbar-ui-angular/src/test.ts b/toolbar-ui-angular/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/toolbar-ui-angular/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/toolbar-ui-angular/src/tsconfig.app.json b/toolbar-ui-angular/src/tsconfig.app.json new file mode 100644 index 0000000..190fd30 --- /dev/null +++ b/toolbar-ui-angular/src/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/toolbar-ui-angular/src/tsconfig.spec.json b/toolbar-ui-angular/src/tsconfig.spec.json new file mode 100644 index 0000000..de77336 --- /dev/null +++ b/toolbar-ui-angular/src/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/toolbar-ui-angular/src/tslint.json b/toolbar-ui-angular/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/toolbar-ui-angular/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/toolbar-ui-angular/tsconfig.json b/toolbar-ui-angular/tsconfig.json new file mode 100644 index 0000000..b271fd9 --- /dev/null +++ b/toolbar-ui-angular/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "module": "es2015", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/toolbar-ui-angular/tslint.json b/toolbar-ui-angular/tslint.json new file mode 100644 index 0000000..868ecba --- /dev/null +++ b/toolbar-ui-angular/tslint.json @@ -0,0 +1,75 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "array-type": false, + "arrow-parens": false, + "deprecation": { + "severity": "warn" + }, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "interface-name": false, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-consecutive-blank-lines": false, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-use-before-declare": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "object-literal-sort-keys": false, + "ordered-imports": false, + "quotemark": [ + true, + "single" + ], + "trailing-comma": false, + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..c01f3e7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "noImplicitAny": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "noUnusedLocals": true, + "pretty": true, + "outDir": "app-js" + }, + "include": [ + "app/main.ts", + "app/preload.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..209b7b1 --- /dev/null +++ b/tslint.json @@ -0,0 +1,21 @@ +{ + "extends": "tslint:recommended", + "rules": { + "no-var-requires": false, + "interface-name": [true, "never-prefix"], + "variable-name": [ + true, + "ban-keywords", + "check-format", + "allow-leading-underscore", + "allow-pascal-case" + ], + "object-literal-sort-keys": false, + "ordered-imports": [false], + "trailing-comma": [false], + "max-line-length": [true, 200], + "no-string-literal": false, + "quotemark": [true, "single"], + "no-console": [false] + } +}