@dytesdk/angular-ui-kit 2.1.3 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dytesdk/angular-ui-kit",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "Dyte's UI Kit to support easy UI development for Angular Projects",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^13 || ^14 || ^15 || ^16 || ^17",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "tslib": "^2.3.0",
11
- "@dytesdk/ui-kit": "2.1.3"
11
+ "@dytesdk/ui-kit": "2.1.4"
12
12
  },
13
13
  "publishConfig": {
14
14
  "tag": "staging"
package/dist/README.md DELETED
@@ -1,85 +0,0 @@
1
- <!-- PROJECT LOGO -->
2
- <p align="center">
3
- <a href="https://dyte.io">
4
- <img src="https://assets.dyte.io/logo-outlined.png" alt="Logo" width="120" />
5
- </a>
6
-
7
- <h2 align="center">Angular UI Kit by dyte</h3>
8
-
9
- <p align="center">
10
- A set of UI components to truly customize your meeting UI, in Angular
11
- <br />
12
- <a href="https://docs.dyte.io"><strong>Explore the docs »</strong></a>
13
- <br />
14
- <br />
15
- <a href="https://app.dyte.io">View Demo</a>
16
- ·
17
- <a href="https://community.dyte.io">Report Bug</a>
18
- ·
19
- <a href="https://community.dyte.io">Request Feature</a>
20
- </p>
21
- </p>
22
-
23
- <!-- TABLE OF CONTENTS -->
24
-
25
- ## Table of Contents
26
-
27
- - [Getting Started](#getting-started)
28
- - [Usage](#usage)
29
- - [About](#about)
30
-
31
- <!-- GETTING STARTED -->
32
-
33
- ## Getting Started
34
-
35
- > There are separate UI Kit packages for VanillaJS and React. Check out the links to the packages below
36
-
37
- > [UI Kit](https://npmjs.com/package/@dytesdk/ui-kit) · [React UI Kit](https://npmjs.com/package/@dytesdk/react-ui-kit)
38
-
39
- First, you will need to install the ui-kit along with the [web-core](https://npmjs.com/package/@dytesdk/web-core) package:
40
-
41
- ```sh
42
- npm i @dytesdk/angular-ui-kit @dytesdk/web-core
43
- ```
44
-
45
- The `web-core` package is the package which handles all the low level logic required for a meeting by interating with our servers. Use it to create a meeting object, which you can pass along to the UI Kit components.
46
-
47
- ## Usage
48
-
49
- Load the component in your template file (component.html):
50
-
51
- ```html
52
- <dyte-meeting #myid></dyte-meeting>
53
- ```
54
-
55
- Then initialize and pass the meeting object to the component:
56
-
57
- ```tsx
58
- class AppComponent {
59
- title = 'MyProject';
60
- @ViewChild('myid') meetingComponent: DyteMeeting;
61
- dyteMeeting: DyteClient;
62
-
63
- async ngAfterViewInit() {
64
- const meeting = await DyteClient.init({
65
- roomName: '<room-name>',
66
- authToken: '<auth-token>',
67
- defaults: {
68
- video: true,
69
- audio: true,
70
- },
71
- });
72
- meeting.joinRoom();
73
- this.dyteMeeting = meeting;
74
- if (this.meetingComponent) this.meetingComponent.meeting = meeting;
75
- }
76
- }
77
- ```
78
-
79
- ## About
80
-
81
- `angular-ui-kit` is created & maintained by Dyte, Inc. You can find us on Twitter - [@dyte_io](https://twitter.com/dyte_io) or write to us at `dev [at] dyte.io`.
82
-
83
- The names and logos for Dyte are trademarks of Dyte, Inc.
84
-
85
- We love open source software! See [our other projects](https://github.com/dyte-in) and [our products](https://dyte.io).
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@dytesdk/angular-ui-kit" />
5
- export * from './public-api';
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHl0ZXNkay1hbmd1bGFyLXVpLWtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keXRlc2RrLWFuZ3VsYXItdWkta2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,20 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { defineCustomElements } from '@dytesdk/ui-kit/loader';
3
- import { DIRECTIVES } from './stencil-generated';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./stencil-generated/components";
6
- defineCustomElements(window);
7
- export class DyteComponentsModule {
8
- }
9
- DyteComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- DyteComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, declarations: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen], exports: [i1.DyteAi, i1.DyteAiChat, i1.DyteAiHome, i1.DyteAiToggle, i1.DyteAiTranscriptions, i1.DyteAudioGrid, i1.DyteAudioTile, i1.DyteAudioVisualizer, i1.DyteAvatar, i1.DyteBreakoutRoomManager, i1.DyteBreakoutRoomParticipants, i1.DyteBreakoutRoomsManager, i1.DyteBreakoutRoomsToggle, i1.DyteBroadcastMessageModal, i1.DyteButton, i1.DyteCameraSelector, i1.DyteCameraToggle, i1.DyteCaptionToggle, i1.DyteChannelCreator, i1.DyteChannelDetails, i1.DyteChannelHeader, i1.DyteChannelSelectorUi, i1.DyteChannelSelectorView, i1.DyteChat, i1.DyteChatComposerUi, i1.DyteChatComposerView, i1.DyteChatMessage, i1.DyteChatMessagesUi, i1.DyteChatMessagesUiPaginated, i1.DyteChatSearchResults, i1.DyteChatSelectorUi, i1.DyteChatToggle, i1.DyteClock, i1.DyteConfirmationModal, i1.DyteControlbar, i1.DyteControlbarButton, i1.DyteCounter, i1.DyteDebugger, i1.DyteDebuggerAudio, i1.DyteDebuggerScreenshare, i1.DyteDebuggerSystem, i1.DyteDebuggerToggle, i1.DyteDebuggerVideo, i1.DyteDialog, i1.DyteDialogManager, i1.DyteDraftAttachmentView, i1.DyteEmojiPicker, i1.DyteEmojiPickerButton, i1.DyteEndedScreen, i1.DyteFileDropzone, i1.DyteFileMessage, i1.DyteFileMessageView, i1.DyteFilePickerButton, i1.DyteFullscreenToggle, i1.DyteGrid, i1.DyteGridPagination, i1.DyteHeader, i1.DyteIcon, i1.DyteIdleScreen, i1.DyteImageMessage, i1.DyteImageMessageView, i1.DyteImageViewer, i1.DyteInformationTooltip, i1.DyteJoinStage, i1.DyteLeaveButton, i1.DyteLeaveMeeting, i1.DyteLivestreamIndicator, i1.DyteLivestreamPlayer, i1.DyteLivestreamToggle, i1.DyteLogo, i1.DyteMarkdownView, i1.DyteMeeting, i1.DyteMeetingTitle, i1.DyteMenu, i1.DyteMenuItem, i1.DyteMenuList, i1.DyteMessageListView, i1.DyteMessageView, i1.DyteMicToggle, i1.DyteMicrophoneSelector, i1.DyteMixedGrid, i1.DyteMoreToggle, i1.DyteMuteAllButton, i1.DyteMuteAllConfirmation, i1.DyteNameTag, i1.DyteNetworkIndicator, i1.DyteNotification, i1.DyteNotifications, i1.DyteOverlayModal, i1.DytePaginatedList, i1.DyteParticipant, i1.DyteParticipantCount, i1.DyteParticipantSetup, i1.DyteParticipantTile, i1.DyteParticipants, i1.DyteParticipantsAudio, i1.DyteParticipantsStageList, i1.DyteParticipantsStageQueue, i1.DyteParticipantsToggle, i1.DyteParticipantsViewerList, i1.DyteParticipantsWaitingList, i1.DytePermissionsMessage, i1.DytePipToggle, i1.DytePluginMain, i1.DytePlugins, i1.DytePluginsToggle, i1.DytePoll, i1.DytePollForm, i1.DytePolls, i1.DytePollsToggle, i1.DyteRecordingIndicator, i1.DyteRecordingToggle, i1.DyteScreenShareToggle, i1.DyteScreenshareView, i1.DyteSettings, i1.DyteSettingsAudio, i1.DyteSettingsToggle, i1.DyteSettingsVideo, i1.DyteSetupScreen, i1.DyteSidebar, i1.DyteSidebarUi, i1.DyteSimpleGrid, i1.DyteSpeakerSelector, i1.DyteSpinner, i1.DyteSpotlightGrid, i1.DyteSpotlightIndicator, i1.DyteStage, i1.DyteStageToggle, i1.DyteSwitch, i1.DyteTabBar, i1.DyteTextComposerView, i1.DyteTextField, i1.DyteTextMessage, i1.DyteTextMessageView, i1.DyteTooltip, i1.DyteTranscript, i1.DyteTranscripts, i1.DyteUiProvider, i1.DyteViewerCount, i1.DyteVirtualizedParticipantList, i1.DyteWaitingScreen] });
11
- DyteComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, imports: [[]] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DyteComponentsModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- declarations: [...DIRECTIVES],
16
- imports: [],
17
- exports: [...DIRECTIVES],
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFFakQsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFPN0IsTUFBTSxPQUFPLG9CQUFvQjs7a0hBQXBCLG9CQUFvQjttSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsWUFIdEIsRUFBRTs0RkFHQSxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQzdCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50cyB9IGZyb20gJ0BkeXRlc2RrL3VpLWtpdC9sb2FkZXInO1xuXG5pbXBvcnQgeyBESVJFQ1RJVkVTIH0gZnJvbSAnLi9zdGVuY2lsLWdlbmVyYXRlZCc7XG5cbmRlZmluZUN1c3RvbUVsZW1lbnRzKHdpbmRvdyk7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogWy4uLkRJUkVDVElWRVNdLFxuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogWy4uLkRJUkVDVElWRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBEeXRlQ29tcG9uZW50c01vZHVsZSB7fVxuIl19
@@ -1,53 +0,0 @@
1
- /* eslint-disable */
2
- /* tslint:disable */
3
- import { fromEvent } from 'rxjs';
4
- export const proxyInputs = (Cmp, inputs) => {
5
- const Prototype = Cmp.prototype;
6
- inputs.forEach(item => {
7
- Object.defineProperty(Prototype, item, {
8
- get() {
9
- return this.el[item];
10
- },
11
- set(val) {
12
- this.z.runOutsideAngular(() => (this.el[item] = val));
13
- }
14
- });
15
- });
16
- };
17
- export const proxyMethods = (Cmp, methods) => {
18
- const Prototype = Cmp.prototype;
19
- methods.forEach(methodName => {
20
- Prototype[methodName] = function () {
21
- const args = arguments;
22
- return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
23
- };
24
- });
25
- };
26
- export const proxyOutputs = (instance, el, events) => {
27
- events.forEach(eventName => instance[eventName] = fromEvent(el, eventName));
28
- };
29
- export const defineCustomElement = (tagName, customElement) => {
30
- if (customElement !== undefined &&
31
- typeof customElements !== 'undefined' &&
32
- !customElements.get(tagName)) {
33
- customElements.define(tagName, customElement);
34
- }
35
- };
36
- // tslint:disable-next-line: only-arrow-functions
37
- export function ProxyCmp(opts) {
38
- const decorator = function (cls) {
39
- const { defineCustomElementFn, inputs, methods } = opts;
40
- if (defineCustomElementFn !== undefined) {
41
- defineCustomElementFn();
42
- }
43
- if (inputs) {
44
- proxyInputs(cls, inputs);
45
- }
46
- if (methods) {
47
- proxyMethods(cls, methods);
48
- }
49
- return cls;
50
- };
51
- return decorator;
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEdBQUc7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBUTtnQkFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxPQUFpQixFQUFFLEVBQUU7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUNoQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRztZQUN0QixNQUFNLElBQUksR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUN6QyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFDRSxhQUFhLEtBQUssU0FBUztRQUMzQixPQUFPLGNBQWMsS0FBSyxXQUFXO1FBQ3JDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFDNUI7UUFDQSxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUMsQ0FBQTtBQUVELGlEQUFpRDtBQUNqRCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQXlFO0lBQ2hHLE1BQU0sU0FBUyxHQUFHLFVBQVUsR0FBUTtRQUNsQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUV4RCxJQUFJLHFCQUFxQixLQUFLLFNBQVMsRUFBRTtZQUN2QyxxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgKi9cbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IHByb3h5SW5wdXRzID0gKENtcDogYW55LCBpbnB1dHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIGlucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcm90b3R5cGUsIGl0ZW0sIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxbaXRlbV07XG4gICAgICB9LFxuICAgICAgc2V0KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAodGhpcy5lbFtpdGVtXSA9IHZhbCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU1ldGhvZHMgPSAoQ21wOiBhbnksIG1ldGhvZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIG1ldGhvZHMuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcbiAgICBQcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgcmV0dXJuIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgICB0aGlzLmVsW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMuZWwsIGFyZ3MpXG4gICAgICApO1xuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3h5T3V0cHV0cyA9IChpbnN0YW5jZTogYW55LCBlbDogYW55LCBldmVudHM6IHN0cmluZ1tdKSA9PiB7XG4gIGV2ZW50cy5mb3JFYWNoKGV2ZW50TmFtZSA9PiBpbnN0YW5jZVtldmVudE5hbWVdID0gZnJvbUV2ZW50KGVsLCBldmVudE5hbWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmluZUN1c3RvbUVsZW1lbnQgPSAodGFnTmFtZTogc3RyaW5nLCBjdXN0b21FbGVtZW50OiBhbnkpID0+IHtcbiAgaWYgKFxuICAgIGN1c3RvbUVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpXG4gICkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBjdXN0b21FbGVtZW50KTtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG9ubHktYXJyb3ctZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gUHJveHlDbXAob3B0czogeyBkZWZpbmVDdXN0b21FbGVtZW50Rm4/OiAoKSA9PiB2b2lkLCBpbnB1dHM/OiBhbnk7IG1ldGhvZHM/OiBhbnkgfSkge1xuICBjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiAoY2xzOiBhbnkpIHtcbiAgICBjb25zdCB7IGRlZmluZUN1c3RvbUVsZW1lbnRGbiwgaW5wdXRzLCBtZXRob2RzIH0gPSBvcHRzO1xuXG4gICAgaWYgKGRlZmluZUN1c3RvbUVsZW1lbnRGbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWZpbmVDdXN0b21FbGVtZW50Rm4oKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRzKSB7XG4gICAgICBwcm94eUlucHV0cyhjbHMsIGlucHV0cyk7XG4gICAgfVxuICAgIGlmIChtZXRob2RzKSB7XG4gICAgICBwcm94eU1ldGhvZHMoY2xzLCBtZXRob2RzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNscztcbiAgfTtcbiAgcmV0dXJuIGRlY29yYXRvcjtcbn1cbiJdfQ==