oxpi-nglib 2.0.1 → 2.0.3

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.
Files changed (117) hide show
  1. package/{esm2020 → esm2022}/lib/cadastros/clientes/clientes/clientes-form.component.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/cadastros/clientes/clientes/clientes.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/cadastros/clientes/clientes-add-dialog/clientes-add-dialog.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/cadastros/clientes/clientes-edit-dialog/clientes-edit-dialog.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/cadastros/clientes/selecao-cliente-dialog/selecao-cliente-dialog.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/cadastros/fornecedores/fornecedores/fornecedores-form.component.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/cadastros/fornecedores/fornecedores/fornecedores.component.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/cadastros/fornecedores/fornecedores-add-dialog/fornecedores-add-dialog.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/cadastros/fornecedores/fornecedores-edit-dialog/fornecedores-edit-dialog.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/cadastros/fornecedores/selecao-fornecedor-dialog/selecao-fornecedor-dialog.component.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/cadastros/funcionarios/funcionario-add-dialog/funcionario-add-dialog.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/cadastros/funcionarios/funcionario-edit-dialog/funcionario-edit-dialog.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/cadastros/funcionarios/funcionario-form/funcionario-form.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/cadastros/funcionarios/funcionarios/funcionarios.component.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-add-dialog/produto-add-dialog.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-busca-filtros-dialog/produto-busca-filtros-dialog.component.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-composicao/produto-composicao.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-composicao-add-dialog/produto-composicao-add-dialog.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-edit-dialog/produto-edit-dialog.component.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-form/produto-form.component.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/cadastros/produtos/produto-selecao-dialog/produto-selecao-dialog.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/cadastros/produtos/produtos/produtos.component.mjs +5 -5
  23. package/{esm2020 → esm2022}/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-add-dialog/produto-categoria-cardapio-add-dialog.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-edit-dialog/produto-categoria-cardapio-edit-dialog.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-selecao-dialog/produto-categoria-cardapio-selecao-dialog.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/cadastros/produtos-categoria-cardapio/produtos-categorias-cardapio/produtos-categorias-cardapio.component.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/mover-grupo-dialog/mover-grupo-dialog.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/produto-grupo-add-dialog/produto-grupo-add-dialog.component.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/produto-grupo-edit-dialog/produto-grupo-edit-dialog.component.mjs +4 -4
  30. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/produto-grupo-form/produto-grupo-form.component.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/produto-grupo-selecao-dialog/produto-grupo-selecao-dialog.component.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/cadastros/produtos-grupos/produtos-grupos/produtos-grupos.component.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/cadastros/produtos-history/produtos-history.component.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/cadastros/produtos-ncm-dialog/produtos-ncm-dialog.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/cadastros/produtos-subgrupos/produto-subgrupo-add-dialog/produto-subgrupo-add-dialog.component.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/cadastros/produtos-subgrupos/produto-subgrupo-edit-dialog/produto-subgrupo-edit-dialog.component.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/cadastros/produtos-subgrupos/produto-subgrupo-selecao-dialog/produto-subgrupo-selecao-dialog.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/cadastros/produtos-subgrupos/produtos-subgrupos/produtos-subgrupos.component.mjs +4 -4
  39. package/{esm2020 → esm2022}/lib/cadastros/produtos-verificacao-grupo/produto-verificacao-grupo-add-dialog/produto-verificacao-grupo-add-dialog.component.mjs +4 -4
  40. package/{esm2020 → esm2022}/lib/cadastros/produtos-verificacao-grupo/produto-verificacao-grupo-edit-dialog/produto-verificacao-grupo-edit-dialog.component.mjs +4 -4
  41. package/{esm2020 → esm2022}/lib/cadastros/produtos-verificacao-grupo/produto-verificacao-grupo-selecao-dialog/produto-verificacao-grupo-selecao-dialog.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/lib/cadastros/produtos-verificacao-grupo/produtos-verificacao-grupo/produtos-verificacao-grupo.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/controls/alert-dialog/alert-dialog.component.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/controls/busy-indicator/busy-indicator.component.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/controls/check-button/check-button.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/controls/image-viewer/image-viewer.component.mjs +4 -4
  47. package/{esm2020 → esm2022}/lib/controls/item-card/item-card.component.mjs +4 -4
  48. package/{esm2020 → esm2022}/lib/controls/month-year-picker/month-year-picker.component.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/controls/numeric-picker/numeric-picker.component.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/controls/paginator/paginator.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/controls/radio-button-group/radio-button-group.component.mjs +4 -4
  52. package/{esm2020 → esm2022}/lib/oxpi-nglib.module.mjs +80 -80
  53. package/{esm2020 → esm2022}/lib/providers/auth-data.service.mjs +4 -4
  54. package/esm2022/lib/providers/common-web-service.mjs +346 -0
  55. package/{esm2020 → esm2022}/lib/providers/export.file.service.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/providers/notification.service.mjs +4 -4
  57. package/{esm2020 → esm2022}/lib/providers/preference.service.mjs +4 -4
  58. package/{esm2020 → esm2022}/lib/providers/safe-html.pipe.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/providers/screen-helper.service.mjs +4 -4
  60. package/{fesm2020 → fesm2022}/oxpi-nglib.mjs +257 -257
  61. package/fesm2022/oxpi-nglib.mjs.map +1 -0
  62. package/lib/cadastros/clientes/clientes/clientes-form.component.d.ts +1 -1
  63. package/lib/cadastros/fornecedores/fornecedores/fornecedores-form.component.d.ts +1 -1
  64. package/lib/cadastros/funcionarios/funcionario-form/funcionario-form.component.d.ts +1 -1
  65. package/lib/cadastros/produtos/produto-form/produto-form.component.d.ts +1 -1
  66. package/lib/cadastros/produtos-grupos/produto-grupo-form/produto-grupo-form.component.d.ts +1 -1
  67. package/lib/controls/busy-indicator/busy-indicator.component.d.ts +1 -1
  68. package/lib/controls/check-button/check-button.component.d.ts +1 -1
  69. package/lib/controls/image-viewer/image-viewer.component.d.ts +1 -1
  70. package/lib/controls/item-card/item-card.component.d.ts +1 -1
  71. package/lib/controls/month-year-picker/month-year-picker.component.d.ts +1 -1
  72. package/lib/controls/numeric-picker/numeric-picker.component.d.ts +1 -1
  73. package/lib/controls/paginator/paginator.component.d.ts +1 -1
  74. package/lib/controls/radio-button-group/radio-button-group.component.d.ts +1 -1
  75. package/package.json +7 -13
  76. package/styles/cadastros-listagens-form.scss +31 -11
  77. package/esm2020/lib/providers/common-web-service.mjs +0 -346
  78. package/fesm2015/oxpi-nglib.mjs +0 -5850
  79. package/fesm2015/oxpi-nglib.mjs.map +0 -1
  80. package/fesm2020/oxpi-nglib.mjs.map +0 -1
  81. /package/{esm2020 → esm2022}/lib/animations/animations.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/models/entidades/funcionario.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/models/entidades/id-nome-model.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/models/entidades/login-item.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/models/entidades/login-result.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/models/entidades/operador.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/models/entidades/ownership.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/models/entidades/permissoes.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/models/entidades/pessoa.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/models/entidades/produto-composicao.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/models/entidades/produto-grupo.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/models/entidades/produto-ncm.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/models/entidades/produto.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/models/entidades/sensores-def.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/models/entidades/setor-estoque.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/models/entidades/suite-base.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/models/entidades/usuario.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/models/infra/busy-state.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/models/infra/lazy-trigger.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/models/infra/number-parser.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/models/infra/ordem.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/models/infra/paging-result.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/models/infra/selecao-utils.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/models/infra/utils-methods.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/models/infra/validations.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/models/settings/PagamentoRecebimentoSearchSetting.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/models/settings/consumo-produto-search-setting.mjs +0 -0
  108. /package/{esm2020 → esm2022}/lib/models/settings/duplicata-search-setting.mjs +0 -0
  109. /package/{esm2020 → esm2022}/lib/models/settings/ocupacao-filter-setting.mjs +0 -0
  110. /package/{esm2020 → esm2022}/lib/models/settings/ocupacao-search-setting.mjs +0 -0
  111. /package/{esm2020 → esm2022}/lib/models/settings/produto-search-setting.mjs +0 -0
  112. /package/{esm2020 → esm2022}/lib/models/settings/search-setting.mjs +0 -0
  113. /package/{esm2020 → esm2022}/lib/models/settings/suites-intervencoes-setting.mjs +0 -0
  114. /package/{esm2020 → esm2022}/lib/models/tuple.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/providers/focus.service.mjs +0 -0
  116. /package/{esm2020 → esm2022}/oxpi-nglib.mjs +0 -0
  117. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -1,346 +0,0 @@
1
- import { HttpHeaders, HttpParams } from '@angular/common/http';
2
- import { Injectable } from '@angular/core';
3
- import { map } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- export class CommonWebService {
7
- constructor(http) {
8
- this.http = http;
9
- this.ROOT_URL = '';
10
- this.GERENCIAL_URL = '';
11
- this.FINANCAS_URL = '';
12
- this.FUNCIONARIO_BASE_URL = '';
13
- this.FUNCIONARIO_CARGO_BASE_URL = '';
14
- this.token = '';
15
- this.PRODUTO_BASE_URL = '';
16
- this.PRODUTO_GRUPO_BASE_URL = '';
17
- this.PRODUTO_SUBGRUPO_BASE_URL = '';
18
- this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL = '';
19
- this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL = '';
20
- this.ESTOQUE_URL = '';
21
- this.MEDIA_BASE_URL = '';
22
- this.MEDIA_PRODUTO_IMAGEM_URL = '';
23
- this.PRODUTO_COMPOSICAO_BASE_URL = '';
24
- this.FORNECEDOR_BASE_URL = '';
25
- this.CLIENTE_BASE_URL = '';
26
- this.OPERADOR_BASE_URL = '';
27
- this.SUITE_BASE_URL = '';
28
- }
29
- setToken(token) {
30
- this.token = token;
31
- }
32
- start(rootUrl) {
33
- this.ROOT_URL = rootUrl;
34
- this.PRODUTO_COMPOSICAO_BASE_URL = rootUrl + "ProdutoComposicao/";
35
- this.FUNCIONARIO_BASE_URL = rootUrl + "Funcionario/";
36
- this.FUNCIONARIO_CARGO_BASE_URL = rootUrl + "FuncionarioCargo/";
37
- this.PRODUTO_BASE_URL = rootUrl + "ProdutoFiscal/";
38
- this.PRODUTO_GRUPO_BASE_URL = rootUrl + "ProdutoGrupo/";
39
- this.PRODUTO_SUBGRUPO_BASE_URL = rootUrl + "ProdutoSubgrupo/";
40
- this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL = rootUrl + "ProdutoCategoriaCardapio/";
41
- this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL = rootUrl + "ProdutoVerificaoGrupo/";
42
- this.ESTOQUE_URL = rootUrl + 'Estoque/';
43
- this.GERENCIAL_URL = rootUrl + 'Gerencial/';
44
- this.FINANCAS_URL = rootUrl + 'Financas/';
45
- this.MEDIA_BASE_URL = this.GERENCIAL_URL + "Media/";
46
- this.MEDIA_PRODUTO_IMAGEM_URL = this.MEDIA_BASE_URL + 'GetProdutoImagem/';
47
- this.FORNECEDOR_BASE_URL = this.FINANCAS_URL + 'Fornecedor/';
48
- this.CLIENTE_BASE_URL = this.FINANCAS_URL + 'Cliente/';
49
- this.OPERADOR_BASE_URL = this.ROOT_URL + "Operador/";
50
- this.SUITE_BASE_URL = this.ROOT_URL + "SuiteBase/";
51
- }
52
- getFuncionarios() {
53
- const url = this.FUNCIONARIO_BASE_URL;
54
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
55
- }
56
- getFuncionariosCargos() {
57
- const url = this.FUNCIONARIO_CARGO_BASE_URL;
58
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
59
- }
60
- buscaFuncionario(setting) {
61
- const url = this.FUNCIONARIO_BASE_URL + CommonWebService.URL_PART_BUSCA;
62
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
63
- }
64
- getNextIdFuncionario() {
65
- const url = this.FUNCIONARIO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
66
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
67
- }
68
- getAllFuncionario() {
69
- const url = this.FUNCIONARIO_BASE_URL;
70
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
71
- }
72
- saveFuncionario(s) {
73
- const url = this.FUNCIONARIO_BASE_URL;
74
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
75
- }
76
- addFuncionario(p) {
77
- const url = this.FUNCIONARIO_BASE_URL;
78
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
79
- }
80
- deleteFuncionario(id) {
81
- const url = this.FUNCIONARIO_BASE_URL + id;
82
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
83
- }
84
- buscaPaginadaProdutos(setting, page, pageSize) {
85
- const url = this.PRODUTO_BASE_URL + CommonWebService.URL_PART_BUSCA_PAGINADA;
86
- const p = { setting: setting, page: page, pageSize: pageSize };
87
- return this.http.post(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
88
- }
89
- getNextIdProduto() {
90
- const url = this.PRODUTO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
91
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
92
- }
93
- getProdutoHistory(id) {
94
- const url = this.PRODUTO_BASE_URL + 'GetHistory/' + id;
95
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
96
- }
97
- findProduto(produtoId) {
98
- const url = this.PRODUTO_BASE_URL + produtoId;
99
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
100
- }
101
- saveProduto(s) {
102
- const url = this.PRODUTO_BASE_URL;
103
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
104
- }
105
- addProduto(p) {
106
- const url = this.PRODUTO_BASE_URL;
107
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
108
- }
109
- deleteProduto(id) {
110
- const url = this.PRODUTO_BASE_URL + id;
111
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
112
- }
113
- buscaProdutoGrupo(setting) {
114
- const url = this.PRODUTO_GRUPO_BASE_URL + CommonWebService.URL_PART_BUSCA;
115
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
116
- }
117
- getAllProdutoGrupo() {
118
- const url = this.PRODUTO_GRUPO_BASE_URL;
119
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
120
- }
121
- getNextIdProdutoGrupo() {
122
- const url = this.PRODUTO_GRUPO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
123
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
124
- }
125
- saveProdutoGrupo(s) {
126
- const url = this.PRODUTO_GRUPO_BASE_URL;
127
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
128
- }
129
- transfereProdutoGrupo(grupoId, novoGrupoId) {
130
- const url = this.PRODUTO_BASE_URL + 'AlteraGrupo';
131
- const p = { oldId: grupoId, newId: novoGrupoId };
132
- return this.http.post(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
133
- }
134
- addProdutoGrupo(p) {
135
- const url = this.PRODUTO_GRUPO_BASE_URL;
136
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
137
- }
138
- deleteProdutoGrupo(id) {
139
- const url = this.PRODUTO_GRUPO_BASE_URL + id;
140
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
141
- }
142
- buscaNcm(ncm) {
143
- const url = this.PRODUTO_BASE_URL + 'BuscaNCM/';
144
- const params = new HttpParams()
145
- .set("ncm", '' + ncm);
146
- return this.http.get(url, this.getHttpOptions(params)).pipe(map(data => data));
147
- }
148
- findNcm(ncm) {
149
- const url = this.PRODUTO_BASE_URL + 'FindNCM/';
150
- const params = new HttpParams()
151
- .set("ncm", '' + ncm);
152
- return this.http.get(url, this.getHttpOptions(params)).pipe(map(data => data));
153
- }
154
- buscaProdutoSubgrupo(setting) {
155
- const url = this.PRODUTO_SUBGRUPO_BASE_URL + CommonWebService.URL_PART_BUSCA;
156
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
157
- }
158
- getNextIdProdutoSubgrupo() {
159
- const url = this.PRODUTO_SUBGRUPO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
160
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
161
- }
162
- saveProdutoSubgrupo(s) {
163
- const url = this.PRODUTO_SUBGRUPO_BASE_URL;
164
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
165
- }
166
- addProdutoSubgrupo(p) {
167
- const url = this.PRODUTO_SUBGRUPO_BASE_URL;
168
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
169
- }
170
- deleteProdutoSubgrupo(id) {
171
- const url = this.PRODUTO_SUBGRUPO_BASE_URL + id;
172
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
173
- }
174
- buscaProdutoCategoriaCardapio(setting) {
175
- const url = this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL + CommonWebService.URL_PART_BUSCA;
176
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
177
- }
178
- getNextIdProdutoCategoriaCardapio() {
179
- const url = this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
180
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
181
- }
182
- saveProdutoCategoriaCardapio(s) {
183
- const url = this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL;
184
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
185
- }
186
- addProdutoCategoriaCardapio(p) {
187
- const url = this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL;
188
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
189
- }
190
- deleteProdutoCategoriaCardapio(id) {
191
- const url = this.PRODUTO_CATEGORIA_CARDAPIO_BASE_URL + id;
192
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
193
- }
194
- buscaProdutoGrupoVerificacao(setting) {
195
- const url = this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL + CommonWebService.URL_PART_BUSCA;
196
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
197
- }
198
- getNextIdProdutoGrupoVerificacao() {
199
- const url = this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
200
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
201
- }
202
- saveProdutoGrupoVerificacao(s) {
203
- const url = this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL;
204
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
205
- }
206
- addProdutoGrupoVerificacao(p) {
207
- const url = this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL;
208
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
209
- }
210
- deleteProdutoGrupoVerificacao(id) {
211
- const url = this.PRODUTO_VERIFICACAO_GRUPO_BASE_URL + id;
212
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
213
- }
214
- getAllSetores() {
215
- const url = this.ESTOQUE_URL + 'Setor/';
216
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
217
- }
218
- getProdutoComposicao(produtoId) {
219
- const url = this.PRODUTO_COMPOSICAO_BASE_URL + produtoId;
220
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
221
- }
222
- saveProdutoComposicao(s) {
223
- const url = this.PRODUTO_COMPOSICAO_BASE_URL;
224
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
225
- }
226
- addProdutoComposicao(p) {
227
- const url = this.PRODUTO_COMPOSICAO_BASE_URL;
228
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
229
- }
230
- deleteProdutoComposicao(id) {
231
- const url = this.PRODUTO_COMPOSICAO_BASE_URL + id;
232
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
233
- }
234
- buscaCliente(setting) {
235
- const url = this.CLIENTE_BASE_URL + CommonWebService.URL_PART_BUSCA;
236
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
237
- }
238
- getAllCliente() {
239
- const url = this.CLIENTE_BASE_URL;
240
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
241
- }
242
- saveCliente(s) {
243
- const url = this.CLIENTE_BASE_URL;
244
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
245
- }
246
- addCliente(p) {
247
- const url = this.CLIENTE_BASE_URL;
248
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
249
- }
250
- deleteCliente(id) {
251
- const url = this.CLIENTE_BASE_URL + id;
252
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
253
- }
254
- buscaFornecedor(setting) {
255
- const url = this.FORNECEDOR_BASE_URL + CommonWebService.URL_PART_BUSCA;
256
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
257
- }
258
- getAllFornecedor() {
259
- const url = this.FORNECEDOR_BASE_URL;
260
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
261
- }
262
- saveFornecedor(s) {
263
- const url = this.FORNECEDOR_BASE_URL;
264
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
265
- }
266
- addFornecedor(p) {
267
- const url = this.FORNECEDOR_BASE_URL;
268
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
269
- }
270
- deleteFornecedor(id) {
271
- const url = this.FORNECEDOR_BASE_URL + id;
272
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
273
- }
274
- getOperadores() {
275
- const url = this.OPERADOR_BASE_URL;
276
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
277
- }
278
- buscaOperador(setting) {
279
- const url = this.OPERADOR_BASE_URL + CommonWebService.URL_PART_BUSCA;
280
- return this.http.post(url, JSON.stringify(setting), this.getHttpOptions()).pipe(map(data => data));
281
- }
282
- getNextIdOperador() {
283
- const url = this.OPERADOR_BASE_URL + CommonWebService.URL_PART_NEXT_ID;
284
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
285
- }
286
- saveOperador(s) {
287
- const url = this.OPERADOR_BASE_URL;
288
- return this.http.post(url, JSON.stringify(s), this.getHttpOptions()).pipe(map(data => data));
289
- }
290
- addOperador(p) {
291
- const url = this.OPERADOR_BASE_URL;
292
- return this.http.put(url, JSON.stringify(p), this.getHttpOptions()).pipe(map(data => data));
293
- }
294
- deleteOperador(id) {
295
- const url = this.OPERADOR_BASE_URL + id;
296
- return this.http.delete(url, this.getHttpOptions()).pipe(map(data => data));
297
- }
298
- getSuites() {
299
- const url = this.SUITE_BASE_URL;
300
- return this.http.get(url, this.getHttpOptions()).pipe(map(data => data));
301
- }
302
- getHttpOptions(parameters) {
303
- return {
304
- headers: new HttpHeaders({
305
- 'Content-Type': 'application/json',
306
- "Accept": "application/json",
307
- "Authorization": 'token ' + this.token,
308
- }),
309
- params: parameters
310
- };
311
- }
312
- getExcelOptions(parameters) {
313
- return {
314
- headers: new HttpHeaders({
315
- 'Content-Type': 'application/json',
316
- "Accept": "application/json",
317
- "Authorization": 'token ' + this.token,
318
- }),
319
- params: parameters,
320
- responseType: 'arraybuffer',
321
- };
322
- }
323
- getHtmlOptions(parameters) {
324
- return {
325
- headers: new HttpHeaders({
326
- 'Content-Type': 'application/json',
327
- "Accept": "application/json",
328
- "Authorization": 'token ' + this.token,
329
- }),
330
- params: parameters,
331
- responseType: 'text',
332
- };
333
- }
334
- }
335
- CommonWebService.URL_PART_BUSCA = "Busca/";
336
- CommonWebService.URL_PART_NEXT_ID = "GetNextId/";
337
- CommonWebService.URL_PART_BUSCA_PAGINADA = "BuscaPaginada/";
338
- CommonWebService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommonWebService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
339
- CommonWebService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommonWebService, providedIn: 'root' });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CommonWebService, decorators: [{
341
- type: Injectable,
342
- args: [{
343
- providedIn: 'root'
344
- }]
345
- }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXdlYi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3hwaS1uZ2xpYi9zcmMvbGliL3Byb3ZpZGVycy9jb21tb24td2ViLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQWdCdkMsTUFBTSxPQUFPLGdCQUFnQjtJQTRCM0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQTNCcEMsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQix5QkFBb0IsR0FBVyxFQUFFLENBQUM7UUFDbEMsK0JBQTBCLEdBQVcsRUFBRSxDQUFDO1FBQ3hDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUM1Qiw4QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDL0Isd0NBQW1DLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLHVDQUFrQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQiw2QkFBd0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsZ0NBQTJCLEdBQVcsRUFBRSxDQUFDO1FBRXpDLHdCQUFtQixHQUFZLEVBQUUsQ0FBQztRQUNsQyxxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFDL0Isc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLG1CQUFjLEdBQUcsRUFBRSxDQUFD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SSxDQUFDLEtBQUs7YUFDdkMsQ0FBQztZQUNGLE1BQU0sRUFBRSxVQUFVO1NBQ25CLENBQUE7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQXVCO1FBQ3JDLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3ZCLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLGVBQWUsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDdkMsQ0FBQztZQUNGLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFlBQVksRUFBRSxhQUF1QjtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUF1QjtRQUNwQyxPQUFPO1lBQ0wsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUN2QixjQUFjLEVBQUUsa0JBQWtCO2dCQUNsQyxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixlQUFlLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLO2FBQ3ZDLENBQUM7WUFDRixNQUFNLEVBQUUsVUFBVTtZQUNsQixZQUFZLEVBQUUsTUFBZ0I7U0FDL0IsQ0FBQztJQUNKLENBQUM7O0FBL1VNLCtCQUFjLEdBQUcsUUFBUSxDQUFDO0FBQzFCLGlDQUFnQixHQUFHLFlBQVksQ0FBQztBQUNoQyx3Q0FBdUIsR0FBRyxnQkFBZ0IsQ0FBQzs2R0ExQnZDLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEZ1bmNpb25hcmlvLCBGdW5jaW9uYXJpb0NhcmdvIH0gZnJvbSAnLi4vbW9kZWxzL2VudGlkYWRlcy9mdW5jaW9uYXJpbyc7XHJcbmltcG9ydCB7IE9wZXJhZG9yIH0gZnJvbSAnLi4vbW9kZWxzL2VudGlkYWRlcy9vcGVyYWRvcic7XHJcbmltcG9ydCB7IENsaWVudGUsIEZvcm5lY2Vkb3IgfSBmcm9tICcuLi9tb2RlbHMvZW50aWRhZGVzL3Blc3NvYSc7XHJcbmltcG9ydCB7IFByb2R1dG8gfSBmcm9tICcuLi9tb2RlbHMvZW50aWRhZGVzL3Byb2R1dG8nO1xyXG5pbXBvcnQgeyBQcm9kdXRvQ29tcG9zaWNhbyB9IGZyb20gJy4uL21vZGVscy9lbnRpZGFkZXMvcHJvZHV0by1jb21wb3NpY2FvJztcclxuaW1wb3J0IHsgUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvLCBQcm9kdXRvR3J1cG8sIFByb2R1dG9TdWJncnVwbywgUHJvZHV0b1ZlcmlmaWNhb0dydXBvIH0gZnJvbSAnLi4vbW9kZWxzL2VudGlkYWRlcy9wcm9kdXRvLWdydXBvJztcclxuaW1wb3J0IHsgTmNtIH0gZnJvbSAnLi4vbW9kZWxzL2VudGlkYWRlcy9wcm9kdXRvLW5jbSc7XHJcbmltcG9ydCB7IFNldG9yRXN0b3F1ZSB9IGZyb20gJy4uL21vZGVscy9lbnRpZGFkZXMvc2V0b3ItZXN0b3F1ZSc7XHJcbmltcG9ydCB7IFN1aXRlQmFzZSB9IGZyb20gJy4uL21vZGVscy9lbnRpZGFkZXMvc3VpdGUtYmFzZSc7XHJcbmltcG9ydCB7IFBhZ2luZ1Jlc3VsdCB9IGZyb20gJy4uL21vZGVscy9pbmZyYS9wYWdpbmctcmVzdWx0JztcclxuaW1wb3J0IHsgU2VhcmNoU2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9zZWFyY2gtc2V0dGluZyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25XZWJTZXJ2aWNlIHtcclxuICBST09UX1VSTDogc3RyaW5nID0gJyc7XHJcbiAgR0VSRU5DSUFMX1VSTCA9ICcnO1xyXG4gIEZJTkFOQ0FTX1VSTCA9ICcnO1xyXG5cclxuICBGVU5DSU9OQVJJT19CQVNFX1VSTDogc3RyaW5nID0gJyc7XHJcbiAgRlVOQ0lPTkFSSU9fQ0FSR09fQkFTRV9VUkw6IHN0cmluZyA9ICcnO1xyXG4gIHRva2VuOiBzdHJpbmcgPSAnJztcclxuICBQUk9EVVRPX0JBU0VfVVJMID0gJyc7XHJcbiAgUFJPRFVUT19HUlVQT19CQVNFX1VSTCA9ICcnO1xyXG4gIFBST0RVVE9fU1VCR1JVUE9fQkFTRV9VUkwgPSAnJztcclxuICBQUk9EVVRPX0NBVEVHT1JJQV9DQVJEQVBJT19CQVNFX1VSTCA9ICcnO1xyXG4gIFBST0RVVE9fVkVSSUZJQ0FDQU9fR1JVUE9fQkFTRV9VUkwgPSAnJztcclxuICBFU1RPUVVFX1VSTCA9ICcnO1xyXG4gIFxyXG4gIE1FRElBX0JBU0VfVVJMID0gJyc7XHJcbiAgTUVESUFfUFJPRFVUT19JTUFHRU1fVVJMID0gJyc7XHJcbiAgUFJPRFVUT19DT01QT1NJQ0FPX0JBU0VfVVJMOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgRk9STkVDRURPUl9CQVNFX1VSTCA6IHN0cmluZyA9ICcnO1xyXG4gIENMSUVOVEVfQkFTRV9VUkwgOiBzdHJpbmcgPSAnJztcclxuICBPUEVSQURPUl9CQVNFX1VSTCA9ICcnO1xyXG4gIFNVSVRFX0JBU0VfVVJMID0gJyc7XHJcblxyXG4gIHN0YXRpYyBVUkxfUEFSVF9CVVNDQSA9IFwiQnVzY2EvXCI7XHJcbiAgc3RhdGljIFVSTF9QQVJUX05FWFRfSUQgPSBcIkdldE5leHRJZC9cIjtcclxuICBzdGF0aWMgVVJMX1BBUlRfQlVTQ0FfUEFHSU5BREEgPSBcIkJ1c2NhUGFnaW5hZGEvXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XHJcblxyXG4gIHNldFRva2VuKHRva2VuOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcclxuICB9XHJcbiAgc3RhcnQocm9vdFVybDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLlJPT1RfVVJMID0gcm9vdFVybDtcclxuICAgIHRoaXMuUFJPRFVUT19DT01QT1NJQ0FPX0JBU0VfVVJMID0gcm9vdFVybCArIFwiUHJvZHV0b0NvbXBvc2ljYW8vXCI7XHJcbiAgICB0aGlzLkZVTkNJT05BUklPX0JBU0VfVVJMID0gcm9vdFVybCArIFwiRnVuY2lvbmFyaW8vXCI7XHJcbiAgICB0aGlzLkZVTkNJT05BUklPX0NBUkdPX0JBU0VfVVJMID0gcm9vdFVybCArIFwiRnVuY2lvbmFyaW9DYXJnby9cIjtcclxuICAgIHRoaXMuUFJPRFVUT19CQVNFX1VSTCA9IHJvb3RVcmwgKyBcIlByb2R1dG9GaXNjYWwvXCI7XHJcbiAgICB0aGlzLlBST0RVVE9fR1JVUE9fQkFTRV9VUkwgPSByb290VXJsICsgXCJQcm9kdXRvR3J1cG8vXCI7XHJcbiAgICB0aGlzLlBST0RVVE9fU1VCR1JVUE9fQkFTRV9VUkwgPSByb290VXJsICsgXCJQcm9kdXRvU3ViZ3J1cG8vXCI7XHJcbiAgICB0aGlzLlBST0RVVE9fQ0FURUdPUklBX0NBUkRBUElPX0JBU0VfVVJMID0gcm9vdFVybCArIFwiUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvL1wiO1xyXG4gICAgdGhpcy5QUk9EVVRPX1ZFUklGSUNBQ0FPX0dSVVBPX0JBU0VfVVJMID0gcm9vdFVybCArIFwiUHJvZHV0b1ZlcmlmaWNhb0dydXBvL1wiO1xyXG4gICAgdGhpcy5FU1RPUVVFX1VSTCA9IHJvb3RVcmwgKyAnRXN0b3F1ZS8nO1xyXG4gICAgdGhpcy5HRVJFTkNJQUxfVVJMID0gcm9vdFVybCArICdHZXJlbmNpYWwvJ1xyXG4gICAgdGhpcy5GSU5BTkNBU19VUkwgPSByb290VXJsICsgJ0ZpbmFuY2FzLydcclxuICAgIHRoaXMuTUVESUFfQkFTRV9VUkwgPSB0aGlzLkdFUkVOQ0lBTF9VUkwgKyBcIk1lZGlhL1wiO1xyXG4gICAgdGhpcy5NRURJQV9QUk9EVVRPX0lNQUdFTV9VUkwgPSB0aGlzLk1FRElBX0JBU0VfVVJMICsgJ0dldFByb2R1dG9JbWFnZW0vJztcclxuICAgIHRoaXMuRk9STkVDRURPUl9CQVNFX1VSTCA9IHRoaXMuRklOQU5DQVNfVVJMICsgJ0Zvcm5lY2Vkb3IvJzsgIFxyXG4gICAgdGhpcy5DTElFTlRFX0JBU0VfVVJMID0gdGhpcy5GSU5BTkNBU19VUkwgKyAnQ2xpZW50ZS8nO1xyXG4gICAgdGhpcy5PUEVSQURPUl9CQVNFX1VSTCA9IHRoaXMuUk9PVF9VUkwgKyBcIk9wZXJhZG9yL1wiXHJcbiAgICB0aGlzLlNVSVRFX0JBU0VfVVJMID0gdGhpcy5ST09UX1VSTCArIFwiU3VpdGVCYXNlL1wiO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnVuY2lvbmFyaW9zKCk6IE9ic2VydmFibGU8RnVuY2lvbmFyaW9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5GVU5DSU9OQVJJT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZ1bmNpb25hcmlvW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZ2V0RnVuY2lvbmFyaW9zQ2FyZ29zKCk6IE9ic2VydmFibGU8RnVuY2lvbmFyaW9DYXJnb1tdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZVTkNJT05BUklPX0NBUkdPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RnVuY2lvbmFyaW9DYXJnb1tdPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBidXNjYUZ1bmNpb25hcmlvKHNldHRpbmc6IFNlYXJjaFNldHRpbmcpOiBPYnNlcnZhYmxlPEZ1bmNpb25hcmlvW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuRlVOQ0lPTkFSSU9fQkFTRV9VUkwgKyBDb21tb25XZWJTZXJ2aWNlLlVSTF9QQVJUX0JVU0NBO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEZ1bmNpb25hcmlvW10+KHVybCwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGdldE5leHRJZEZ1bmNpb25hcmlvKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZVTkNJT05BUklPX0JBU0VfVVJMICsgQ29tbW9uV2ViU2VydmljZS5VUkxfUEFSVF9ORVhUX0lEO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8bnVtYmVyPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGdldEFsbEZ1bmNpb25hcmlvKCk6IE9ic2VydmFibGU8RnVuY2lvbmFyaW9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5GVU5DSU9OQVJJT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZ1bmNpb25hcmlvW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgc2F2ZUZ1bmNpb25hcmlvKHM6IEZ1bmNpb25hcmlvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuRlVOQ0lPTkFSSU9fQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHMpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBhZGRGdW5jaW9uYXJpbyhwOiBGdW5jaW9uYXJpbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZVTkNJT05BUklPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVGdW5jaW9uYXJpbyhpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuRlVOQ0lPTkFSSU9fQkFTRV9VUkwgKyBpZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgXHJcbiAgYnVzY2FQYWdpbmFkYVByb2R1dG9zKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nLCBwYWdlIDogbnVtYmVyLCBwYWdlU2l6ZSA6IG51bWJlcik6IE9ic2VydmFibGU8UGFnaW5nUmVzdWx0PFByb2R1dG8+PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fQkFTRV9VUkwgKyBDb21tb25XZWJTZXJ2aWNlLlVSTF9QQVJUX0JVU0NBX1BBR0lOQURBO1xyXG4gICAgY29uc3QgcCA9IHsgc2V0dGluZzogc2V0dGluZywgcGFnZTogcGFnZSwgcGFnZVNpemU6IHBhZ2VTaXplIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UGFnaW5nUmVzdWx0PFByb2R1dG8+Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBnZXROZXh0SWRQcm9kdXRvKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fQkFTRV9VUkwgKyBDb21tb25XZWJTZXJ2aWNlLlVSTF9QQVJUX05FWFRfSUQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZ2V0UHJvZHV0b0hpc3RvcnkoaWQgOiBudW1iZXIpOiBPYnNlcnZhYmxlPFByb2R1dG9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0JBU0VfVVJMICsgJ0dldEhpc3RvcnkvJyArIGlkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvZHV0b1tdPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGZpbmRQcm9kdXRvKHByb2R1dG9JZCA6IG51bWJlcik6IE9ic2VydmFibGU8UHJvZHV0bz4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0JBU0VfVVJMICsgcHJvZHV0b0lkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvZHV0bz4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBzYXZlUHJvZHV0byhzOiBQcm9kdXRvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgSlNPTi5zdHJpbmdpZnkocyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGFkZFByb2R1dG8ocCA6IFByb2R1dG8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVQcm9kdXRvKGlkIDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19CQVNFX1VSTCArIGlkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBidXNjYVByb2R1dG9HcnVwbyhzZXR0aW5nIDogU2VhcmNoU2V0dGluZyk6IE9ic2VydmFibGU8UHJvZHV0b0dydXBvW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19HUlVQT19CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfQlVTQ0E7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZHV0b0dydXBvW10+KHVybCwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfSAgXHJcbiAgZ2V0QWxsUHJvZHV0b0dydXBvKCk6IE9ic2VydmFibGU8UHJvZHV0b0dydXBvW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19HUlVQT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2R1dG9HcnVwb1tdPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGdldE5leHRJZFByb2R1dG9HcnVwbygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0dSVVBPX0JBU0VfVVJMICsgQ29tbW9uV2ViU2VydmljZS5VUkxfUEFSVF9ORVhUX0lEO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8bnVtYmVyPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIHNhdmVQcm9kdXRvR3J1cG8oczogUHJvZHV0b0dydXBvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19HUlVQT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgSlNPTi5zdHJpbmdpZnkocyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIHRyYW5zZmVyZVByb2R1dG9HcnVwbyhncnVwb0lkIDogbnVtYmVyLCBub3ZvR3J1cG9JZCA6IG51bWJlcik6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fQkFTRV9VUkwgKyAnQWx0ZXJhR3J1cG8nO1xyXG4gICAgY29uc3QgcCA9IHsgb2xkSWQ6IGdydXBvSWQsIG5ld0lkOiBub3ZvR3J1cG9JZCB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bWJlcj4odXJsLCBKU09OLnN0cmluZ2lmeShwKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgYWRkUHJvZHV0b0dydXBvKHAgOiBQcm9kdXRvR3J1cG8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0dSVVBPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVQcm9kdXRvR3J1cG8oaWQgOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0dSVVBPX0JBU0VfVVJMICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIGJ1c2NhTmNtKG5jbSA6IHN0cmluZyk6IE9ic2VydmFibGU8TmNtW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19CQVNFX1VSTCArICdCdXNjYU5DTS8nO1xyXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKVxyXG4gICAgLnNldChcIm5jbVwiLCAnJyArIG5jbSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOY21bXT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKHBhcmFtcykpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBcclxuICBmaW5kTmNtKG5jbSA6IHN0cmluZyk6IE9ic2VydmFibGU8TmNtIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0JBU0VfVVJMICsgJ0ZpbmROQ00vJztcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcclxuICAgIC5zZXQoXCJuY21cIiwgJycgKyBuY20pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TmNtIHwgbnVsbD4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKHBhcmFtcykpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGJ1c2NhUHJvZHV0b1N1YmdydXBvKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nKTogT2JzZXJ2YWJsZTxQcm9kdXRvU3ViZ3J1cG9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX1NVQkdSVVBPX0JBU0VfVVJMICsgQ29tbW9uV2ViU2VydmljZS5VUkxfUEFSVF9CVVNDQTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxQcm9kdXRvU3ViZ3J1cG9bXT4odXJsLCBKU09OLnN0cmluZ2lmeShzZXR0aW5nKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZ2V0TmV4dElkUHJvZHV0b1N1YmdydXBvKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fU1VCR1JVUE9fQkFTRV9VUkwgKyBDb21tb25XZWJTZXJ2aWNlLlVSTF9QQVJUX05FWFRfSUQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgc2F2ZVByb2R1dG9TdWJncnVwbyhzOiBQcm9kdXRvU3ViZ3J1cG8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX1NVQkdSVVBPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShzKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgYWRkUHJvZHV0b1N1YmdydXBvKHAgOiBQcm9kdXRvU3ViZ3J1cG8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX1NVQkdSVVBPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVQcm9kdXRvU3ViZ3J1cG8oaWQgOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX1NVQkdSVVBPX0JBU0VfVVJMICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIFxyXG4gIGJ1c2NhUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nKTogT2JzZXJ2YWJsZTxQcm9kdXRvQ2F0ZWdvcmlhQ2FyZGFwaW9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0NBVEVHT1JJQV9DQVJEQVBJT19CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfQlVTQ0E7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvW10+KHVybCwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGdldE5leHRJZFByb2R1dG9DYXRlZ29yaWFDYXJkYXBpbygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0NBVEVHT1JJQV9DQVJEQVBJT19CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfTkVYVF9JRDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PG51bWJlcj4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBzYXZlUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvKHM6IFByb2R1dG9DYXRlZ29yaWFDYXJkYXBpbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fQ0FURUdPUklBX0NBUkRBUElPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShzKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgYWRkUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvKHAgOiBQcm9kdXRvQ2F0ZWdvcmlhQ2FyZGFwaW8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0NBVEVHT1JJQV9DQVJEQVBJT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShwKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZGVsZXRlUHJvZHV0b0NhdGVnb3JpYUNhcmRhcGlvKGlkIDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19DQVRFR09SSUFfQ0FSREFQSU9fQkFTRV9VUkwgKyBpZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgYnVzY2FQcm9kdXRvR3J1cG9WZXJpZmljYWNhbyhzZXR0aW5nIDogU2VhcmNoU2V0dGluZyk6IE9ic2VydmFibGU8UHJvZHV0b1ZlcmlmaWNhb0dydXBvW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19WRVJJRklDQUNBT19HUlVQT19CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfQlVTQ0E7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvZHV0b1ZlcmlmaWNhb0dydXBvW10+KHVybCwgSlNPTi5zdHJpbmdpZnkoc2V0dGluZyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGdldE5leHRJZFByb2R1dG9HcnVwb1ZlcmlmaWNhY2FvKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fVkVSSUZJQ0FDQU9fR1JVUE9fQkFTRV9VUkwgKyBDb21tb25XZWJTZXJ2aWNlLlVSTF9QQVJUX05FWFRfSUQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxudW1iZXI+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgc2F2ZVByb2R1dG9HcnVwb1ZlcmlmaWNhY2FvKHM6IFByb2R1dG9WZXJpZmljYW9HcnVwbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fVkVSSUZJQ0FDQU9fR1JVUE9fQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHMpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBhZGRQcm9kdXRvR3J1cG9WZXJpZmljYWNhbyhwIDogUHJvZHV0b1ZlcmlmaWNhb0dydXBvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19WRVJJRklDQUNBT19HUlVQT19CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShwKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZGVsZXRlUHJvZHV0b0dydXBvVmVyaWZpY2FjYW8oaWQgOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX1ZFUklGSUNBQ0FPX0dSVVBPX0JBU0VfVVJMICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFNldG9yZXMoKTogT2JzZXJ2YWJsZTxTZXRvckVzdG9xdWVbXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5FU1RPUVVFX1VSTCArICdTZXRvci8nO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U2V0b3JFc3RvcXVlW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIGdldFByb2R1dG9Db21wb3NpY2FvKHByb2R1dG9JZCA6IG51bWJlcik6IE9ic2VydmFibGU8UHJvZHV0b0NvbXBvc2ljYW9bXT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5QUk9EVVRPX0NPTVBPU0lDQU9fQkFTRV9VUkwgKyBwcm9kdXRvSWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQcm9kdXRvQ29tcG9zaWNhb1tdPih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfSAgXHJcbiAgc2F2ZVByb2R1dG9Db21wb3NpY2FvKHM6IFByb2R1dG9Db21wb3NpY2FvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19DT01QT1NJQ0FPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShzKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgYWRkUHJvZHV0b0NvbXBvc2ljYW8ocCA6IFByb2R1dG9Db21wb3NpY2FvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuUFJPRFVUT19DT01QT1NJQ0FPX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVQcm9kdXRvQ29tcG9zaWNhbyhpZCA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlBST0RVVE9fQ09NUE9TSUNBT19CQVNFX1VSTCArIGlkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih1cmwsIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYnVzY2FDbGllbnRlKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nKTogT2JzZXJ2YWJsZTxDbGllbnRlW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuQ0xJRU5URV9CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfQlVTQ0E7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q2xpZW50ZVtdPih1cmwsIEpTT04uc3RyaW5naWZ5KHNldHRpbmcpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBnZXRBbGxDbGllbnRlKCk6IE9ic2VydmFibGU8Q2xpZW50ZVtdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkNMSUVOVEVfQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDbGllbnRlW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgc2F2ZUNsaWVudGUoczogQ2xpZW50ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkNMSUVOVEVfQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHMpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBhZGRDbGllbnRlKHAgOiBDbGllbnRlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuQ0xJRU5URV9CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShwKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZGVsZXRlQ2xpZW50ZShpZCA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkNMSUVOVEVfQkFTRV9VUkwgKyBpZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgYnVzY2FGb3JuZWNlZG9yKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nKTogT2JzZXJ2YWJsZTxGb3JuZWNlZG9yW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuRk9STkVDRURPUl9CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfQlVTQ0E7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Rm9ybmVjZWRvcltdPih1cmwsIEpTT04uc3RyaW5naWZ5KHNldHRpbmcpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBnZXRBbGxGb3JuZWNlZG9yKCk6IE9ic2VydmFibGU8Rm9ybmVjZWRvcltdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZPUk5FQ0VET1JfQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxGb3JuZWNlZG9yW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgc2F2ZUZvcm5lY2Vkb3IoczogRm9ybmVjZWRvcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZPUk5FQ0VET1JfQkFTRV9VUkw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHMpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBhZGRGb3JuZWNlZG9yKHAgOiBGb3JuZWNlZG9yKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuRk9STkVDRURPUl9CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4odXJsLCBKU09OLnN0cmluZ2lmeShwKSwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcbiAgZGVsZXRlRm9ybmVjZWRvcihpZCA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLkZPUk5FQ0VET1JfQkFTRV9VUkwgKyBpZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldE9wZXJhZG9yZXMoKTogT2JzZXJ2YWJsZTxPcGVyYWRvcltdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLk9QRVJBRE9SX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8T3BlcmFkb3JbXT4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBidXNjYU9wZXJhZG9yKHNldHRpbmcgOiBTZWFyY2hTZXR0aW5nKTogT2JzZXJ2YWJsZTxPcGVyYWRvcltdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLk9QRVJBRE9SX0JBU0VfVVJMICsgQ29tbW9uV2ViU2VydmljZS5VUkxfUEFSVF9CVVNDQTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxPcGVyYWRvcltdPih1cmwsIEpTT04uc3RyaW5naWZ5KHNldHRpbmcpLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBnZXROZXh0SWRPcGVyYWRvcigpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5PUEVSQURPUl9CQVNFX1VSTCArIENvbW1vbldlYlNlcnZpY2UuVVJMX1BBUlRfTkVYVF9JRDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PG51bWJlcj4odXJsLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBzYXZlT3BlcmFkb3IoczogT3BlcmFkb3IpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5PUEVSQURPUl9CQVNFX1VSTDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgSlNPTi5zdHJpbmdpZnkocyksIHRoaXMuZ2V0SHR0cE9wdGlvbnMoKSkucGlwZShtYXAoZGF0YSA9PiBkYXRhKSk7XHJcbiAgfVxyXG4gIGFkZE9wZXJhZG9yKHAgOiBPcGVyYWRvcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLk9QRVJBRE9SX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih1cmwsIEpTT04uc3RyaW5naWZ5KHApLCB0aGlzLmdldEh0dHBPcHRpb25zKCkpLnBpcGUobWFwKGRhdGEgPT4gZGF0YSkpO1xyXG4gIH1cclxuICBkZWxldGVPcGVyYWRvcihpZCA6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLk9QRVJBRE9SX0JBU0VfVVJMICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIGdldFN1aXRlcygpOiBPYnNlcnZhYmxlPFN1aXRlQmFzZVtdPiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLlNVSVRFX0JBU0VfVVJMO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U3VpdGVCYXNlW10+KHVybCwgdGhpcy5nZXRIdHRwT3B0aW9ucygpKS5waXBlKG1hcChkYXRhID0+IGRhdGEpKTtcclxuICB9XHJcblxyXG4gIGdldEh0dHBPcHRpb25zKHBhcmFtZXRlcnM/OiBIdHRwUGFyYW1zKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6ICd0b2tlbiAnICsgdGhpcy50b2tlbixcclxuICAgICAgfSksXHJcbiAgICAgIHBhcmFtczogcGFyYW1ldGVyc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RXhjZWxPcHRpb25zKHBhcmFtZXRlcnM/OiBIdHRwUGFyYW1zKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgXCJBY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgXCJBdXRob3JpemF0aW9uXCI6ICd0b2tlbiAnICsgdGhpcy50b2tlbixcclxuICAgICAgfSksXHJcbiAgICAgIHBhcmFtczogcGFyYW1ldGVycyxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzICdqc29uJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXRIdG1sT3B0aW9ucyhwYXJhbWV0ZXJzPzogSHR0cFBhcmFtcykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIFwiQWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgIFwiQXV0aG9yaXphdGlvblwiOiAndG9rZW4gJyArIHRoaXMudG9rZW4sXHJcbiAgICAgIH0pLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtZXRlcnMsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnIGFzICdqc29uJyxcclxuICAgIH07XHJcbiAgfVxyXG59Il19