{"version":3,"file":"ng-stalk-lang-field.mjs","sources":["../../components/lang-field/field-item.ts","../../components/lang-field/lang-field-form-model.ts","../../components/lang-field/mag-lang-field.component.ts","../../components/lang-field/mag-lang-field.component.html","../../components/lang-field/mag-lang-field.module.ts","../../components/lang-field/public-api.ts","../../components/lang-field/ng-stalk-lang-field.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Serializable } from 'ng-stalk/core/model';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport class FieldItem extends Serializable {\n  // @ts-ignore\n  lang: string;\n  // @ts-ignore\n  name: string;\n  checked = false;\n\n  constructor(obj?: NzSafeAny) {\n    super(obj);\n    this.fillFromJSONObject(obj);\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Serializable } from 'ng-stalk/core/model';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { FieldItem } from './field-item';\n\nexport class LangFieldFormModel extends Serializable {\n  entries: FieldItem[] = [];\n\n  constructor(obj?: NzSafeAny) {\n    super(obj);\n    this.fillFromJSONObject(obj);\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { ControlValueAccessor, FormArray, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as _ from 'lodash';\nimport { MagInitConfig, Override } from 'ng-stalk/core/model';\nimport { MagCodeCacheService, MagConfigService } from 'ng-stalk/core/service';\nimport { CodeAndName } from 'ng-stalk/core/types';\nimport { MagUtil } from 'ng-stalk/core/util';\nimport { NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { FieldItem } from './field-item';\nimport { LangFieldFormModel } from './lang-field-form-model';\n\nexport type FieldModelType = string | string[];\n\n@Component({\n  selector: 'mag-lang-field',\n  templateUrl: './mag-lang-field.component.html',\n  styleUrls: ['./mag-lang-field.component.scss'],\n\n  exportAs: 'magLangField',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MagLangFieldComponent),\n      multi: true\n    }\n  ],\n  host: {\n    '(click)': 'hostClick($event)',\n    // '[class.ant-radio-wrapper-checked]': 'checked',\n    '[class.ant-radio-wrapper-disabled]': 'nzDisabled'\n  }\n})\nexport class MagLangFieldComponent implements ControlValueAccessor, OnInit, OnDestroy {\n  /**\n   * output 모델과 동일\n   */\n  // @ts-ignore\n  value: FieldModelType;\n\n  onChange: (value: FieldModelType) => void = () => null;\n  onTouched: () => void = () => null;\n  // @ViewChild('switchElement', { static: true }) private switchElement: ElementRef;\n  @Input() @InputBoolean() nzLoading = false;\n  @Input() @InputBoolean() nzDisabled = false;\n  @Input() @InputBoolean() nzControl = false;\n  // @Input() nzCheckedChildren: string | TemplateRef<void>;\n  // @Input() nzUnCheckedChildren: string | TemplateRef<void>;\n\n  /**\n   * 동작 방식 및 응담 형태\n   * single : 1개의 미디어만 선택됨. output model 은 media id\n   * multiple : 다수개의 미디어가 선택됨. output model 은 media id 배열\n   */\n  @Input() mode: 'single' | 'multiple' = 'multiple';\n\n  /**\n   * 등록 가능한 최대 미디어 수\n   * - mode 가 single 일 경우에는 1개로 고정된다.\n   * - mode 가 multiple 인 경우, 정수값만큼 등록가능하다. 0이하인 경우 무제한\n   */\n  @Input() maxItems: number = -1;\n\n  /**\n   * 선택 가능한 언어 목록\n   * 값이 없을 경우, MagFrame 에서 지원하는 supportLanguages 가 사용된다.\n   * deprecated. use langs\n   */\n  @Input()\n  supportLanguages: string[] = [];\n\n  @Input()\n  langs: string[] = [];\n\n  languages: CodeAndName[] = [];\n\n  hostClick(e: MouseEvent): void {\n    e.preventDefault();\n    if (!this.nzDisabled && !this.nzLoading && !this.nzControl) {\n      // this.updateValue(!this.checked);\n    }\n  }\n\n  /**\n   * 외부로 값을 출력하고, 내부 값을 갱신한다.\n   *\n   * 메소드 구현 주의사항: 내부 값 변경시에만 output 이벤트를 발행하고 ChangeDetector 를 트리거해야한다.\n   * @param value\n   */\n  private updateValue(value: FieldModelType | null): void {\n    if (!_.isEqual(this.value, value)) {\n      // @ts-ignore\n      this.value = value;\n      this.draw();\n      this.onChange(this.value);\n\n      // 3. 변경 사항 알림 (필수)\n      this.cdr.markForCheck();\n    }\n  }\n\n  focus(): void {\n    // this.focusMonitor.focusVia(this.switchElement.nativeElement, 'keyboard');\n  }\n\n  blur(): void {\n    // this.switchElement.nativeElement.blur();\n  }\n\n  constructor(\n    public nzConfigService: NzConfigService,\n    private cdr: ChangeDetectorRef,\n    // private focusMonitor: FocusMonitor,\n    private formBuilder: FormBuilder,\n    // private magDialogService: MagDialogService,\n    private magCodeCacheService: MagCodeCacheService,\n    private magConfigService: MagConfigService<MagInitConfig>\n  ) {\n    this._unsubscribeAll = new Subject();\n    this.componentId = MagUtil.generateGUID();\n  }\n\n  ngOnInit(): void {\n    // 1. 사용가능한 languages 결정\n\n    // 1.1 외부 파라미터 정리(구 버젼 호환 코드 작성)\n    if (!this.langs || this.langs.length === 0) {\n      if (this.supportLanguages && this.supportLanguages.length > 0) {\n        this.langs = this.supportLanguages;\n      } else {\n        this.langs = [];\n      }\n    }\n\n    if (this.langs.length > 0) {\n      // 1.2 사용 가능한 언어목록이 사용자 입력(외부 주입)으로부터 주어진 경우\n      let full = this.magConfigService.getInitConfig().supportLanguages || [];\n      if (full.length === 0) {\n        full = this.magCodeCacheService.getList('allLanguages');\n      }\n      if (full.length === 0) {\n        full = this.magCodeCacheService.getList('languages');\n      }\n      if (full.length === 0) {\n        full = this.languages = this.magConfigService.getInitConfig().defaultLanguages;\n      }\n      this.languages = full.filter(codeAndName => {\n        if (this.langs.indexOf(codeAndName.code) >= 0) {\n          return true;\n        } else {\n          return false;\n        }\n      });\n    } else {\n      // 1.3 사용 가능한 언어 목록을 기본 설정으로부터 가져오는 경우\n      this.languages = this.magConfigService.getInitConfig().defaultLanguages || [];\n      if (this.languages.length === 0) {\n        this.languages = this.magConfigService.getInitConfig().supportLanguages;\n      }\n    }\n\n    this.initForm(\n      new LangFieldFormModel(\n        this.languages.map(\n          codeAndName =>\n            new FieldItem({\n              lang: codeAndName.code,\n              name: codeAndName.name,\n              checked: false\n            })\n        )\n      )\n    );\n  }\n\n  // ngAfterViewInit(): void {\n  // this.focusMonitor.monitor(this.switchElement.nativeElement, true).subscribe(focusOrigin => {\n  //   if (!focusOrigin) {\n  //     // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n  //     // Angular does not expect events to be raised during change detection, so any state change\n  //     // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n  //     // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n  //     // telling the form control it has been touched until the next tick.\n  //     Promise.resolve().then(() => this.onTouched());\n  //   }\n  // });\n  // }\n\n  ngOnDestroy(): void {\n    // this.focusMonitor.stopMonitoring(this.switchElement.nativeElement);\n\n    // features\n    this._unsubscribeAll.next(true);\n    this._unsubscribeAll.complete();\n  }\n\n  /**\n   * 외부로부터 값을 주입받는다.\n   * 이벤트를 발행하지 않고, 내부 값을 업데이트해야한다.\n   * @param value\n   */\n  @Override\n  writeValue(value: FieldModelType): void {\n    // 1. 내부 value 갑 업데이트 (필수)\n    this.value = value;\n\n    // 2. feature 로직 수행\n    if (this.mode === 'single') {\n      const entries: FieldItem[] = this.languages.map(\n        codeAndName =>\n          new FieldItem({\n            lang: codeAndName.code,\n            name: codeAndName.name,\n            checked: codeAndName.code === (value as string)\n          })\n      );\n\n      const formModel = new LangFieldFormModel({\n        entries: entries\n      });\n      this.initForm(formModel);\n    } else if (this.mode === 'multiple') {\n      const entries: FieldItem[] = this.languages.map(\n        codeAndName =>\n          new FieldItem({\n            lang: codeAndName.code,\n            name: codeAndName.name,\n            checked: _.indexOf(value as string[], codeAndName.code) >= 0\n          })\n      );\n      this.initForm(\n        new LangFieldFormModel({\n          entries: entries\n        })\n      );\n      // this.modelForm.patchValue({\n      //   entries: value as MediaItem[]\n      // });\n    }\n\n    this.draw();\n\n    // 3. 변경 사항 알림 (필수)\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * @description\n   * Registers a callback function that is called when the control's value\n   * changes in the UI.\n   *\n   * This method is called by the forms API on initialization to update the form\n   * model when values propagate from the view to the model.\n   *\n   * When implementing the `registerOnChange` method in your own value accessor,\n   * save the given function so your class calls it at the appropriate time.\n   *\n   * @usageNotes\n   * ### Store the change function\n   *\n   * The following example stores the provided function as an internal method.\n   * @param fn\n   */\n  @Override\n  registerOnChange(fn: (_: FieldModelType) => void): void {\n    this.onChange = fn;\n  }\n\n  @Override\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  @Override\n  setDisabledState(isDisabled: boolean): void {\n    this.nzDisabled = isDisabled;\n    this.cdr.markForCheck();\n  }\n\n  // --------------------------------------------------------------------------\n  // Feature\n  // --------------------------------------------------------------------------\n\n  // @ts-ignore\n  modelForm: FormGroup;\n  private _unsubscribeAll: Subject<NzSafeAny>;\n  componentId: string;\n\n  draw(): void {\n    this.cdr.markForCheck();\n  }\n\n  createForm(formModel: LangFieldFormModel): FormGroup {\n    return this.formBuilder.group({\n      entries: this.formBuilder.array([...formModel.entries.map(i18nElement => this.makeI18nFormControl(i18nElement))])\n    });\n  }\n\n  makeI18nFormControl(item: FieldItem): FormGroup {\n    return this.formBuilder.group({\n      lang: item.lang,\n      name: item.name,\n      checked: item.checked\n    });\n  }\n\n  fitControls(formModel: LangFieldFormModel): void {\n    this.initForm(formModel);\n    this.modelForm.patchValue(formModel);\n    this.draw();\n  }\n\n  initForm(formModel: LangFieldFormModel): void {\n    // if (this._value) {\n    //   formModel.entries = this._value;\n    // } else {\n    //   formModel.entries = [];\n    // }\n\n    this.modelForm = this.createForm(formModel);\n\n    this.modelForm.valueChanges.pipe(takeUntil(this._unsubscribeAll)).subscribe(() => {\n      const updatedValues: LangFieldFormModel = new LangFieldFormModel(this.modelForm.getRawValue());\n\n      if (updatedValues.entries) {\n        // this.value = updatedValues.entries;\n\n        if (this.mode === 'single') {\n          if (updatedValues.entries.length > 0) {\n            this.updateValue(updatedValues.entries[0].lang);\n          } else {\n            this.updateValue(null);\n          }\n        } else {\n          this.updateValue(updatedValues.entries.filter(entry => entry.checked).map(entry => entry.lang));\n        }\n\n        this.draw();\n      }\n    });\n  }\n\n  get formControls(): FormArray {\n    // @ts-ignore\n    return this.modelForm.controls.entries.controls as FormArray;\n  }\n\n  removeEntryAt(index: number): void {\n    // @ts-ignore\n    this.modelForm.controls.entries.removeAt(index);\n    this.updateValue(this.extractValueFromFormModel().map(fieldItem => fieldItem.lang));\n  }\n\n  addEntry(item: FieldItem): void {\n    // @ts-ignore\n    this.modelForm.controls.entries.controls.push(this.makeI18nFormControl(item));\n  }\n\n  get isMultiple(): boolean {\n    return this.mode !== 'single';\n  }\n\n  private extractValueFromFormModel(): FieldItem[] {\n    return new LangFieldFormModel(this.modelForm.getRawValue()).entries;\n  }\n}\n","<!--<mat-checkbox (change)=\"$event ? masterToggle() : null\"-->\n<!--              [checked]=\"selection.hasValue() && isAllSelected()\"-->\n<!--              [indeterminate]=\"selection.hasValue() && !isAllSelected()\">-->\n<!--</mat-checkbox>-->\n<form [formGroup]=\"modelForm\">\n\n  <span formGroupName=\"entries\">\n    <span *ngFor=\"let language of languages;let i = index;\" [formArrayName]=\"i\">\n      <label nz-checkbox\n             [nzValue]=\"false\"\n             [nzDisabled]=\"nzDisabled\"\n             formControlName=\"checked\"\n      > {{ language.name }}</label>\n    </span>\n\n\n  <!--  <mat-checkbox (click)=\"$event.stopPropagation()\"-->\n  <!--                (change)=\"$event ? toggle(language) : null\"-->\n  <!--                [checked]=\"selection.isSelected(language)\"-->\n  <!--                [disabled]=\"disabled\"-->\n  <!--  >-->\n  <!--  </mat-checkbox>-->\n  <!--  {{ language.name }}-->\n  </span>\n</form>\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NzCheckboxModule } from 'ng-zorro-antd/checkbox';\nimport { MagLangFieldComponent } from './mag-lang-field.component';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, NzCheckboxModule],\n  declarations: [MagLangFieldComponent],\n  exports: [MagLangFieldComponent]\n})\nexport class MagLangFieldModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './mag-lang-field.component';\nexport * from './mag-lang-field.module';\nexport * from './lang-field-form-model';\nexport * from './field-item';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;AAGG;AAKG,MAAO,SAAU,SAAQ,YAAY,CAAA;AAOzC,IAAA,WAAA,CAAY,GAAe,EAAA;QACzB,KAAK,CAAC,GAAG,CAAC,CAAC;AAHb,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAId,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC9B;AACF;;ACnBD;;;AAGG;AAMG,MAAO,kBAAmB,SAAQ,YAAY,CAAA;AAGlD,IAAA,WAAA,CAAY,GAAe,EAAA;QACzB,KAAK,CAAC,GAAG,CAAC,CAAC;AAHb,QAAA,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;AAIxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;KAC9B;AACF;;MCsCY,qBAAqB,CAAA;IA4EhC,WACS,CAAA,eAAgC,EAC/B,GAAsB;;IAEtB,WAAwB;;AAExB,IAAA,mBAAwC,EACxC,gBAAiD,EAAA;AANlD,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAC/B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAEtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAExB,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiC;AA5E3D,QAAA,IAAA,CAAA,QAAQ,GAAoC,MAAM,IAAI,CAAC;AACvD,QAAA,IAAA,CAAA,SAAS,GAAe,MAAM,IAAI,CAAC;;AAEV,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;;AAI3C;;;;AAIG;AACM,QAAA,IAAI,CAAA,IAAA,GAA0B,UAAU,CAAC;AAElD;;;;AAIG;AACM,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC,CAAC;AAE/B;;;;AAIG;AAEH,QAAA,IAAgB,CAAA,gBAAA,GAAa,EAAE,CAAC;AAGhC,QAAA,IAAK,CAAA,KAAA,GAAa,EAAE,CAAC;AAErB,QAAA,IAAS,CAAA,SAAA,GAAkB,EAAE,CAAC;AA4C5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;KAC3C;AA5CD,IAAA,SAAS,CAAC,CAAa,EAAA;QACrB,CAAC,CAAC,cAAc,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;;AAE3D,SAAA;KACF;AAED;;;;;AAKG;AACK,IAAA,WAAW,CAAC,KAA4B,EAAA;QAC9C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;AAEjC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAG1B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACzB,SAAA;KACF;IAED,KAAK,GAAA;;KAEJ;IAED,IAAI,GAAA;;KAEH;IAeD,QAAQ,GAAA;;;AAIN,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACpC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACjB,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEzB,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;AACxE,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACzD,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtD,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC;AAChF,aAAA;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAG;AACzC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7C,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AAAM,qBAAA;AACL,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC9E,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,gBAAgB,CAAC;AACzE,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CACX,IAAI,kBAAkB,CACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,WAAW,IACT,IAAI,SAAS,CAAC;YACZ,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,YAAA,OAAO,EAAE,KAAK;SACf,CAAC,CACL,CACF,CACF,CAAC;KACH;;;;;;;;;;;;;IAeD,WAAW,GAAA;;;AAIT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;KACjC;AAED;;;;AAIG;AAEH,IAAA,UAAU,CAAC,KAAqB,EAAA;;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;AAGnB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAC7C,WAAW,IACT,IAAI,SAAS,CAAC;gBACZ,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,gBAAA,OAAO,EAAE,WAAW,CAAC,IAAI,KAAM,KAAgB;AAChD,aAAA,CAAC,CACL,CAAC;AAEF,YAAA,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC;AACvC,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AACnC,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAC7C,WAAW,IACT,IAAI,SAAS,CAAC;gBACZ,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,gBAAA,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAiB,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,aAAA,CAAC,CACL,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CACX,IAAI,kBAAkB,CAAC;AACrB,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA,CAAC,CACH,CAAC;;;;AAIH,SAAA;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;;AAGZ,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAED;;;;;;;;;;;;;;;;AAgBG;AAEH,IAAA,gBAAgB,CAAC,EAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAGD,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAGD,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;IAWD,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KACzB;AAED,IAAA,UAAU,CAAC,SAA6B,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClH,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,IAAe,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,SAA6B,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,SAA6B,EAAA;;;;;;QAOpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC/E,YAAA,MAAM,aAAa,GAAuB,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;YAE/F,IAAI,aAAa,CAAC,OAAO,EAAE;;AAGzB,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,oBAAA,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,wBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxB,qBAAA;AACF,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjG,iBAAA;gBAED,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,YAAY,GAAA;;QAEd,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAqB,CAAC;KAC9D;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;;QAEzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACrF;AAED,IAAA,QAAQ,CAAC,IAAe,EAAA;;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;KAC/B;IAEO,yBAAyB,GAAA;AAC/B,QAAA,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC;KACrE;;mHA3UU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAbrB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/CH,87BAyBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;ADuCY,IAAA,YAAY,EAAE;CAAmB,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AACjC,IAAA,YAAY,EAAE;CAAoB,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAClC,IAAA,YAAY,EAAE;CAAmB,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;IA4J1C,QAAQ;CA2CR,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;;IAmBA,QAAQ;CAGR,EAAA,qBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;;IAEA,QAAQ;CAGR,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;;IAEA,QAAQ;CAIR,EAAA,qBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;4FApPU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAIhB,QAAA,EAAA,cAAc,EACH,mBAAA,EAAA,KAAK,EACT,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EACK,IAAA,EAAA;AACJ,wBAAA,SAAS,EAAE,mBAAmB;;AAE9B,wBAAA,oCAAoC,EAAE,YAAY;AACnD,qBAAA,EAAA,QAAA,EAAA,87BAAA,EAAA,CAAA;iOAYwB,SAAS,EAAA,CAAA;sBAAjC,KAAK;gBACmB,UAAU,EAAA,CAAA;sBAAlC,KAAK;gBACmB,SAAS,EAAA,CAAA;sBAAjC,KAAK;gBASG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAOG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAQN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;AAmIN,aAAA,CAAA,EAAA,UAAU,EA8DV,EAAA,EAAA,gBAAgB,EAKhB,EAAA,EAAA,iBAAiB,MAKjB,gBAAgB,EAAA,EAAA,EAAA,EAAA,CAAA;;AEvSlB;;;AAGG;MAaU,kBAAkB,CAAA;;gHAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iHAAlB,kBAAkB,EAAA,YAAA,EAAA,CAHd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAD1B,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAEhE,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJnB,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;4FAI/D,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,CAAC;oBAC3E,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;iBACjC,CAAA;;;ACfD;;;AAGG;;ACHH;;AAEG;;;;"}