@provoly/dashboard 1.3.2 → 1.3.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.
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  Cette librarie permet d'intégrer des tableaux de bord multifenêtres dans votre application.
2
2
 
3
- La documentation est disponible [ici](https://documentation.dev.provoly.net/provoly-dashboard/main/index.html).
3
+ La documentation est disponible [ici](https://documentation.provoly.net/provoly-dashboard/main/index.html).
@@ -26,12 +26,12 @@ export const enTranslations = {
26
26
  code: {
27
27
  UNRECOGNIZED: 'Provided file contains a column "{{name}}", which is not present in the chosen dataset',
28
28
  FILE_MANDATORY: 'No file was provided',
29
- NB_ATTRIBUTES: 'The number of columns in the file does not match the number of attributes in the chosen dataset',
30
- CAST: 'Value {{name}} could not be casted to type "{{type}}"',
31
- ELASTIC_SEARCH: 'Elastic Search error: {{elasticError}}'
29
+ NO_ATTRIBUTES: 'No corresponding attribute found in uploaded file',
30
+ FORMAT: '"{{name}}": "{{receivedValue}}" could not be converted to type "{{type}}"',
31
+ STORAGE: 'Storage stack trace error: {{elasticError}}'
32
32
  },
33
33
  normalize: 'Standardize geographic shapes'
34
34
  }
35
35
  }
36
36
  };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvaW1wb3J0L2kxOG4vZW4udHJhbnNsYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsYUFBYTtZQUNwQixhQUFhLEVBQUUsYUFBYTtZQUM1QixNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsZUFBZTtZQUMzQixZQUFZLEVBQUUsbUJBQW1CO1lBQ2pDLGNBQWMsRUFBRSxvQkFBb0I7WUFDcEMsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxPQUFPLEVBQUUsb0VBQW9FO1lBQzdFLFFBQVEsRUFBRSw2RUFBNkU7WUFDdkYsVUFBVSxFQUFFLGFBQWE7WUFDekIsYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixlQUFlLEVBQUUscUNBQXFDO1lBQ3RELGVBQWUsRUFBRSxzQ0FBc0M7WUFDdkQsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLDBCQUEwQjtZQUNqQyxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLHFEQUFxRDthQUMzRDtZQUNELElBQUksRUFBRSxpQkFBaUI7WUFDdkIsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixPQUFPLEVBQUUsU0FBUztZQUNsQixRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsd0ZBQXdGO2dCQUN0RyxjQUFjLEVBQUUsc0JBQXNCO2dCQUN0QyxhQUFhLEVBQ1gsaUdBQWlHO2dCQUNuRyxJQUFJLEVBQUUsdURBQXVEO2dCQUM3RCxjQUFjLEVBQUUsd0NBQXdDO2FBQ3pEO1lBQ0QsU0FBUyxFQUFFLCtCQUErQjtTQUMzQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlblRyYW5zbGF0aW9ucyA9IHtcbiAgJ0BwcnknOiB7XG4gICAgaW1wb3J0OiB7XG4gICAgICB0aXRsZTogJ0ltcG9ydCBkYXRhJyxcbiAgICAgIGRhdGFzZXRJbXBvcnQ6ICdJbXBvcnQgaW4gOicsXG4gICAgICBpbXBvcnQ6ICdJbXBvcnQnLFxuICAgICAgZXJyb3JUaXRsZTogJ0ltcG9ydCBmYWlsZWQnLFxuICAgICAgc3VjY2Vzc1RpdGxlOiAnSW1wb3J0IHN1Y2Nlc3NmdWwnLFxuICAgICAgdXBsb2FkVGl0bGV6aXA6ICdDaG9vc2UgYSAuemlwIGZpbGUnLFxuICAgICAgdXBsb2FkVGl0bGVjc3Y6ICdDaG9vc2UgYSAuY3N2IGZpbGUnLFxuICAgICAgd2FybmluZzogJ0ZpbGUgbXVzdCBiZSB1bmRlciAyR0IsIG9yIG11c3QgYmUgaW1wb3J0ZWQgdmlhIGRpcmVjdGx5IHZpYSBBUElzLicsXG4gICAgICB0b29MYXJnZTogJ0ZpbGUgaXMgdG9vIGxhcmdlICh7e2N1cnJlbnR9fSA+IDJHQiksIHBsZWFzZSB1c2UgQVBJcyB0byBpbXBvcnQgdGhpcyBmaWxlLicsXG4gICAgICBzZWxlY3RGaWxlOiAnU2VsZWN0IGZpbGUnLFxuICAgICAgaW1wb3J0ZWRMaW5lczogJ2ltcG9ydGVkIGxpbmVzJyxcbiAgICAgIGNvbnN1bHREYXRhc2V0MTogJ1RoZSBpbXBvcnQgaXMgaW4gcHJvZ3Jlc3MsIHNlZSB0aGUgJyxcbiAgICAgIGNvbnN1bHREYXRhc2V0MjogJyBkYXRhc2V0IHBhZ2UgdG8gY2hlY2sgaXRzIGNvbmRpdGlvbicsXG4gICAgICBlcnJvcnM6ICdlcnJvcnMnLFxuICAgICAgZXJyb3I6ICdFcnJvciBvbiBpbXBvcnQ6IHt7bXNnfX0nLFxuICAgICAgZXJyb3JDb2RlOiB7XG4gICAgICAgIDQwOTogJ0ltcG9ydCBhbHJlYWR5IGluIHByb2dyZXNzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLidcbiAgICAgIH0sXG4gICAgICBsaW5lOiAnTGluZSB7e2xpbmV9fTogJyxcbiAgICAgIHdpdGhvdXRMaW5lOiAnR2xvYmFsIGVycm9yczogJyxcbiAgICAgIGRhdGFzZXQ6ICdEYXRhc2V0JyxcbiAgICAgIGZpbGVUeXBlOiAnU2VsZWN0IGZpbGUgdHlwZScsXG4gICAgICBjb2RlOiB7XG4gICAgICAgIFVOUkVDT0dOSVpFRDogJ1Byb3ZpZGVkIGZpbGUgY29udGFpbnMgYSBjb2x1bW4gXCJ7e25hbWV9fVwiLCB3aGljaCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY2hvc2VuIGRhdGFzZXQnLFxuICAgICAgICBGSUxFX01BTkRBVE9SWTogJ05vIGZpbGUgd2FzIHByb3ZpZGVkJyxcbiAgICAgICAgTkJfQVRUUklCVVRFUzpcbiAgICAgICAgICAnVGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaWxlIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiB0aGUgY2hvc2VuIGRhdGFzZXQnLFxuICAgICAgICBDQVNUOiAnVmFsdWUge3tuYW1lfX0gY291bGQgbm90IGJlIGNhc3RlZCB0byB0eXBlIFwie3t0eXBlfX1cIicsXG4gICAgICAgIEVMQVNUSUNfU0VBUkNIOiAnRWxhc3RpYyBTZWFyY2ggZXJyb3I6IHt7ZWxhc3RpY0Vycm9yfX0nXG4gICAgICB9LFxuICAgICAgbm9ybWFsaXplOiAnU3RhbmRhcmRpemUgZ2VvZ3JhcGhpYyBzaGFwZXMnXG4gICAgfVxuICB9XG59O1xuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvaW1wb3J0L2kxOG4vZW4udHJhbnNsYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsYUFBYTtZQUNwQixhQUFhLEVBQUUsYUFBYTtZQUM1QixNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsZUFBZTtZQUMzQixZQUFZLEVBQUUsbUJBQW1CO1lBQ2pDLGNBQWMsRUFBRSxvQkFBb0I7WUFDcEMsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxPQUFPLEVBQUUsb0VBQW9FO1lBQzdFLFFBQVEsRUFBRSw2RUFBNkU7WUFDdkYsVUFBVSxFQUFFLGFBQWE7WUFDekIsYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixlQUFlLEVBQUUscUNBQXFDO1lBQ3RELGVBQWUsRUFBRSxzQ0FBc0M7WUFDdkQsTUFBTSxFQUFFLFFBQVE7WUFDaEIsS0FBSyxFQUFFLDBCQUEwQjtZQUNqQyxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLHFEQUFxRDthQUMzRDtZQUNELElBQUksRUFBRSxpQkFBaUI7WUFDdkIsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixPQUFPLEVBQUUsU0FBUztZQUNsQixRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsd0ZBQXdGO2dCQUN0RyxjQUFjLEVBQUUsc0JBQXNCO2dCQUN0QyxhQUFhLEVBQUUsbURBQW1EO2dCQUNsRSxNQUFNLEVBQUUsMkVBQTJFO2dCQUNuRixPQUFPLEVBQUUsNkNBQTZDO2FBQ3ZEO1lBQ0QsU0FBUyxFQUFFLCtCQUErQjtTQUMzQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlblRyYW5zbGF0aW9ucyA9IHtcbiAgJ0BwcnknOiB7XG4gICAgaW1wb3J0OiB7XG4gICAgICB0aXRsZTogJ0ltcG9ydCBkYXRhJyxcbiAgICAgIGRhdGFzZXRJbXBvcnQ6ICdJbXBvcnQgaW4gOicsXG4gICAgICBpbXBvcnQ6ICdJbXBvcnQnLFxuICAgICAgZXJyb3JUaXRsZTogJ0ltcG9ydCBmYWlsZWQnLFxuICAgICAgc3VjY2Vzc1RpdGxlOiAnSW1wb3J0IHN1Y2Nlc3NmdWwnLFxuICAgICAgdXBsb2FkVGl0bGV6aXA6ICdDaG9vc2UgYSAuemlwIGZpbGUnLFxuICAgICAgdXBsb2FkVGl0bGVjc3Y6ICdDaG9vc2UgYSAuY3N2IGZpbGUnLFxuICAgICAgd2FybmluZzogJ0ZpbGUgbXVzdCBiZSB1bmRlciAyR0IsIG9yIG11c3QgYmUgaW1wb3J0ZWQgdmlhIGRpcmVjdGx5IHZpYSBBUElzLicsXG4gICAgICB0b29MYXJnZTogJ0ZpbGUgaXMgdG9vIGxhcmdlICh7e2N1cnJlbnR9fSA+IDJHQiksIHBsZWFzZSB1c2UgQVBJcyB0byBpbXBvcnQgdGhpcyBmaWxlLicsXG4gICAgICBzZWxlY3RGaWxlOiAnU2VsZWN0IGZpbGUnLFxuICAgICAgaW1wb3J0ZWRMaW5lczogJ2ltcG9ydGVkIGxpbmVzJyxcbiAgICAgIGNvbnN1bHREYXRhc2V0MTogJ1RoZSBpbXBvcnQgaXMgaW4gcHJvZ3Jlc3MsIHNlZSB0aGUgJyxcbiAgICAgIGNvbnN1bHREYXRhc2V0MjogJyBkYXRhc2V0IHBhZ2UgdG8gY2hlY2sgaXRzIGNvbmRpdGlvbicsXG4gICAgICBlcnJvcnM6ICdlcnJvcnMnLFxuICAgICAgZXJyb3I6ICdFcnJvciBvbiBpbXBvcnQ6IHt7bXNnfX0nLFxuICAgICAgZXJyb3JDb2RlOiB7XG4gICAgICAgIDQwOTogJ0ltcG9ydCBhbHJlYWR5IGluIHByb2dyZXNzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLidcbiAgICAgIH0sXG4gICAgICBsaW5lOiAnTGluZSB7e2xpbmV9fTogJyxcbiAgICAgIHdpdGhvdXRMaW5lOiAnR2xvYmFsIGVycm9yczogJyxcbiAgICAgIGRhdGFzZXQ6ICdEYXRhc2V0JyxcbiAgICAgIGZpbGVUeXBlOiAnU2VsZWN0IGZpbGUgdHlwZScsXG4gICAgICBjb2RlOiB7XG4gICAgICAgIFVOUkVDT0dOSVpFRDogJ1Byb3ZpZGVkIGZpbGUgY29udGFpbnMgYSBjb2x1bW4gXCJ7e25hbWV9fVwiLCB3aGljaCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY2hvc2VuIGRhdGFzZXQnLFxuICAgICAgICBGSUxFX01BTkRBVE9SWTogJ05vIGZpbGUgd2FzIHByb3ZpZGVkJyxcbiAgICAgICAgTk9fQVRUUklCVVRFUzogJ05vIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGZvdW5kIGluIHVwbG9hZGVkIGZpbGUnLFxuICAgICAgICBGT1JNQVQ6ICdcInt7bmFtZX19XCI6IFwie3tyZWNlaXZlZFZhbHVlfX1cIiBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHR5cGUgXCJ7e3R5cGV9fVwiJyxcbiAgICAgICAgU1RPUkFHRTogJ1N0b3JhZ2Ugc3RhY2sgdHJhY2UgZXJyb3I6IHt7ZWxhc3RpY0Vycm9yfX0nXG4gICAgICB9LFxuICAgICAgbm9ybWFsaXplOiAnU3RhbmRhcmRpemUgZ2VvZ3JhcGhpYyBzaGFwZXMnXG4gICAgfVxuICB9XG59O1xuIl19
@@ -27,12 +27,12 @@ export const frTranslations = {
27
27
  code: {
28
28
  UNRECOGNIZED: "Le fichier fourni contient une colonne «\u00A0{{name}}\u00A0», qui n'est pas présente dans le jeu de données choisi",
29
29
  FILE_MANDATORY: 'Aucun fichier fourni',
30
- NB_ATTRIBUTES: "Le nombre des colonnes dans le fichier fourni ne correspond pas au nombre d'attributs dans le jeu de données choisi",
31
- CAST: "La valeur «\u00A0{{name}}\u00A0», n'a pas pu être convertie en type «\u00A0{{type}}\u00A0»,",
32
- ELASTIC_SEARCH: 'Elastic Search stack trace error: {{elasticError}}'
30
+ NO_ATTRIBUTES: "Aucun attribut correspondant n'a été trouvé dans le fichier fourni",
31
+ FORMAT: "«\u00A0{{name}}\u00A0»: «\u00A0{{receivedValue}}\u00A0» n'a pas pu être convertie en type «\u00A0{{type}}\u00A0»",
32
+ STORAGE: 'Storage stack trace error: {{elasticError}}'
33
33
  },
34
34
  normalize: 'Normaliser les formes géographiques'
35
35
  }
36
36
  }
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIudHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvaW1wb3J0L2kxOG4vZnIudHJhbnNsYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLGFBQWEsRUFBRSxrQ0FBa0M7WUFDakQsTUFBTSxFQUFFLFVBQVU7WUFDbEIsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixZQUFZLEVBQUUsMEJBQTBCO1lBQ3hDLGNBQWMsRUFBRSx5QkFBeUI7WUFDekMsY0FBYyxFQUFFLHlCQUF5QjtZQUN6QyxPQUFPLEVBQ0wsK0lBQStJO1lBQ2pKLFFBQVEsRUFBRSxrR0FBa0c7WUFDNUcsVUFBVSxFQUFFLHlCQUF5QjtZQUNyQyxhQUFhLEVBQUUsb0JBQW9CO1lBQ25DLGVBQWUsRUFBRSw2REFBNkQ7WUFDOUUsZUFBZSxFQUFFLHlCQUF5QjtZQUMxQyxjQUFjLEVBQUUseUJBQXlCO1lBQ3pDLEtBQUssRUFBRSxrQ0FBa0M7WUFDekMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxxREFBcUQ7YUFDM0Q7WUFDRCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixRQUFRLEVBQUUsaUNBQWlDO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQ1YscUhBQXFIO2dCQUN2SCxjQUFjLEVBQUUsc0JBQXNCO2dCQUN0QyxhQUFhLEVBQ1gscUhBQXFIO2dCQUN2SCxJQUFJLEVBQUUsNkZBQTZGO2dCQUNuRyxjQUFjLEVBQUUsb0RBQW9EO2FBQ3JFO1lBQ0QsU0FBUyxFQUFFLHFDQUFxQztTQUNqRDtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmclRyYW5zbGF0aW9ucyA9IHtcbiAgJ0BwcnknOiB7XG4gICAgaW1wb3J0OiB7XG4gICAgICB0aXRsZTogJ0ltcG9ydCBkZSBkb25uw6llcycsXG4gICAgICBkYXRhc2V0SW1wb3J0OiAnSW1wb3J0ZXIgZGFucyB1biBqZXUgZGUgZG9ubsOpZXM6JyxcbiAgICAgIGltcG9ydDogJ0ltcG9ydGVyJyxcbiAgICAgIGVycm9yVGl0bGU6IFwiTCdpbXBvcnQgYSDDqWNob3XDqVwiLFxuICAgICAgc3VjY2Vzc1RpdGxlOiAnSW1wb3J0IGRlIGRvbm7DqWVzIHLDqXVzc2knLFxuICAgICAgdXBsb2FkVGl0bGV6aXA6ICdDaG9pc2lyIHVuIGZpY2hpZXIgLnppcCcsXG4gICAgICB1cGxvYWRUaXRsZWNzdjogJ0Nob2lzaXIgdW4gZmljaGllciAuY3N2JyxcbiAgICAgIHdhcm5pbmc6XG4gICAgICAgICdBdHRlbnRpb24sIGxlIGZpY2hpZXIgbmUgZG9pdCBwYXMgZMOpcGFzc2VyIDJHQiBwb3VyIMOqdHJlIGludMOpZ3JlciB2aWEgY2V0IMOpY3Jhbi4gTGUgY2FzIMOpY2jDqWFudCwgdm90cmUgZmljaGllciBkZXZyYSDDqnRyZSBpbXBvcnTDqSB2aWEgbGVzIEFQSScsXG4gICAgICB0b29MYXJnZTogJ0ZpY2hpZXIgdHJvcCB2b2x1bWluZXV4ICh7e2N1cnJlbnR9fSA+IDJHQiksIHZldWlsbGV6IHV0aWxpc2VyIGxlcyBBUEkgcG91ciBpbXBvcnRlciBjZXMgZG9ubsOpZXMnLFxuICAgICAgc2VsZWN0RmlsZTogJ1PDqWxlY3Rpb25uZXIgdW4gZmljaGllcicsXG4gICAgICBpbXBvcnRlZExpbmVzOiAnbGlnbmVzIGltcG9ydMOpZShzKScsXG4gICAgICBjb25zdWx0RGF0YXNldDE6IFwiTCdpbXBvcnQgZXN0IGVuIGNvdXJzLCBjb25zdWx0ZXogbGEgcGFnZSBkdSBqZXUgZGUgZG9ubsOpZXMgXCIsXG4gICAgICBjb25zdWx0RGF0YXNldDI6ICcgcG91ciB2w6lyaWZpZXIgc29uIMOpdGF0JyxcbiAgICAgIHNoYXBlZmlsZVN0YXRlOiAnIHBvdXIgdsOpcmlmaWVyIHNvbiDDqXRhdCcsXG4gICAgICBlcnJvcjogXCJFcnJldXIgbG9ycyBkZSBsJ2ltcG9ydDoge3ttc2d9fVwiLFxuICAgICAgZXJyb3JzOiAnZXJyZXVyKHMpJyxcbiAgICAgIGVycm9yQ29kZToge1xuICAgICAgICA0MDk6ICdJbXBvcnQgZMOpasOgIGVuIGNvdXJzLCB2ZXVpbGxleiByw6llc3NheWVyIHBsdXMgdGFyZC4nXG4gICAgICB9LFxuICAgICAgbGluZTogJ0xpZ25lIHt7bGluZX19OiAnLFxuICAgICAgd2l0aG91dExpbmU6ICdFcnJldXJzIGdsb2JhbGVzOiAnLFxuICAgICAgZGF0YXNldDogJ0pldSBkZSBkb25uw6llcycsXG4gICAgICBmaWxlVHlwZTogJ1PDqWxlY3Rpb25uZXIgdW4gdHlwZSBkZSBmaWNoaWVyJyxcbiAgICAgIGNvZGU6IHtcbiAgICAgICAgVU5SRUNPR05JWkVEOlxuICAgICAgICAgIFwiTGUgZmljaGllciBmb3VybmkgY29udGllbnQgdW5lIGNvbG9ubmUgwqtcXHUwMEEwe3tuYW1lfX1cXHUwMEEwwrssIHF1aSBuJ2VzdCBwYXMgcHLDqXNlbnRlIGRhbnMgbGUgamV1IGRlIGRvbm7DqWVzIGNob2lzaVwiLFxuICAgICAgICBGSUxFX01BTkRBVE9SWTogJ0F1Y3VuIGZpY2hpZXIgZm91cm5pJyxcbiAgICAgICAgTkJfQVRUUklCVVRFUzpcbiAgICAgICAgICBcIkxlIG5vbWJyZSBkZXMgY29sb25uZXMgZGFucyBsZSBmaWNoaWVyIGZvdXJuaSBuZSBjb3JyZXNwb25kIHBhcyBhdSBub21icmUgZCdhdHRyaWJ1dHMgZGFucyBsZSBqZXUgZGUgZG9ubsOpZXMgY2hvaXNpXCIsXG4gICAgICAgIENBU1Q6IFwiTGEgdmFsZXVyIMKrXFx1MDBBMHt7bmFtZX19XFx1MDBBMMK7LCBuJ2EgcGFzIHB1IMOqdHJlIGNvbnZlcnRpZSBlbiB0eXBlIMKrXFx1MDBBMHt7dHlwZX19XFx1MDBBMMK7LFwiLFxuICAgICAgICBFTEFTVElDX1NFQVJDSDogJ0VsYXN0aWMgU2VhcmNoIHN0YWNrIHRyYWNlIGVycm9yOiB7e2VsYXN0aWNFcnJvcn19J1xuICAgICAgfSxcbiAgICAgIG5vcm1hbGl6ZTogJ05vcm1hbGlzZXIgbGVzIGZvcm1lcyBnw6lvZ3JhcGhpcXVlcydcbiAgICB9XG4gIH1cbn07XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIudHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvaW1wb3J0L2kxOG4vZnIudHJhbnNsYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUU7WUFDTixLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLGFBQWEsRUFBRSxrQ0FBa0M7WUFDakQsTUFBTSxFQUFFLFVBQVU7WUFDbEIsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixZQUFZLEVBQUUsMEJBQTBCO1lBQ3hDLGNBQWMsRUFBRSx5QkFBeUI7WUFDekMsY0FBYyxFQUFFLHlCQUF5QjtZQUN6QyxPQUFPLEVBQ0wsK0lBQStJO1lBQ2pKLFFBQVEsRUFBRSxrR0FBa0c7WUFDNUcsVUFBVSxFQUFFLHlCQUF5QjtZQUNyQyxhQUFhLEVBQUUsb0JBQW9CO1lBQ25DLGVBQWUsRUFBRSw2REFBNkQ7WUFDOUUsZUFBZSxFQUFFLHlCQUF5QjtZQUMxQyxjQUFjLEVBQUUseUJBQXlCO1lBQ3pDLEtBQUssRUFBRSxrQ0FBa0M7WUFDekMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxxREFBcUQ7YUFDM0Q7WUFDRCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixRQUFRLEVBQUUsaUNBQWlDO1lBQzNDLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQ1YscUhBQXFIO2dCQUN2SCxjQUFjLEVBQUUsc0JBQXNCO2dCQUN0QyxhQUFhLEVBQUUsb0VBQW9FO2dCQUNuRixNQUFNLEVBQ0osbUhBQW1IO2dCQUNySCxPQUFPLEVBQUUsNkNBQTZDO2FBQ3ZEO1lBQ0QsU0FBUyxFQUFFLHFDQUFxQztTQUNqRDtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBmclRyYW5zbGF0aW9ucyA9IHtcbiAgJ0BwcnknOiB7XG4gICAgaW1wb3J0OiB7XG4gICAgICB0aXRsZTogJ0ltcG9ydCBkZSBkb25uw6llcycsXG4gICAgICBkYXRhc2V0SW1wb3J0OiAnSW1wb3J0ZXIgZGFucyB1biBqZXUgZGUgZG9ubsOpZXM6JyxcbiAgICAgIGltcG9ydDogJ0ltcG9ydGVyJyxcbiAgICAgIGVycm9yVGl0bGU6IFwiTCdpbXBvcnQgYSDDqWNob3XDqVwiLFxuICAgICAgc3VjY2Vzc1RpdGxlOiAnSW1wb3J0IGRlIGRvbm7DqWVzIHLDqXVzc2knLFxuICAgICAgdXBsb2FkVGl0bGV6aXA6ICdDaG9pc2lyIHVuIGZpY2hpZXIgLnppcCcsXG4gICAgICB1cGxvYWRUaXRsZWNzdjogJ0Nob2lzaXIgdW4gZmljaGllciAuY3N2JyxcbiAgICAgIHdhcm5pbmc6XG4gICAgICAgICdBdHRlbnRpb24sIGxlIGZpY2hpZXIgbmUgZG9pdCBwYXMgZMOpcGFzc2VyIDJHQiBwb3VyIMOqdHJlIGludMOpZ3JlciB2aWEgY2V0IMOpY3Jhbi4gTGUgY2FzIMOpY2jDqWFudCwgdm90cmUgZmljaGllciBkZXZyYSDDqnRyZSBpbXBvcnTDqSB2aWEgbGVzIEFQSScsXG4gICAgICB0b29MYXJnZTogJ0ZpY2hpZXIgdHJvcCB2b2x1bWluZXV4ICh7e2N1cnJlbnR9fSA+IDJHQiksIHZldWlsbGV6IHV0aWxpc2VyIGxlcyBBUEkgcG91ciBpbXBvcnRlciBjZXMgZG9ubsOpZXMnLFxuICAgICAgc2VsZWN0RmlsZTogJ1PDqWxlY3Rpb25uZXIgdW4gZmljaGllcicsXG4gICAgICBpbXBvcnRlZExpbmVzOiAnbGlnbmVzIGltcG9ydMOpZShzKScsXG4gICAgICBjb25zdWx0RGF0YXNldDE6IFwiTCdpbXBvcnQgZXN0IGVuIGNvdXJzLCBjb25zdWx0ZXogbGEgcGFnZSBkdSBqZXUgZGUgZG9ubsOpZXMgXCIsXG4gICAgICBjb25zdWx0RGF0YXNldDI6ICcgcG91ciB2w6lyaWZpZXIgc29uIMOpdGF0JyxcbiAgICAgIHNoYXBlZmlsZVN0YXRlOiAnIHBvdXIgdsOpcmlmaWVyIHNvbiDDqXRhdCcsXG4gICAgICBlcnJvcjogXCJFcnJldXIgbG9ycyBkZSBsJ2ltcG9ydDoge3ttc2d9fVwiLFxuICAgICAgZXJyb3JzOiAnZXJyZXVyKHMpJyxcbiAgICAgIGVycm9yQ29kZToge1xuICAgICAgICA0MDk6ICdJbXBvcnQgZMOpasOgIGVuIGNvdXJzLCB2ZXVpbGxleiByw6llc3NheWVyIHBsdXMgdGFyZC4nXG4gICAgICB9LFxuICAgICAgbGluZTogJ0xpZ25lIHt7bGluZX19OiAnLFxuICAgICAgd2l0aG91dExpbmU6ICdFcnJldXJzIGdsb2JhbGVzOiAnLFxuICAgICAgZGF0YXNldDogJ0pldSBkZSBkb25uw6llcycsXG4gICAgICBmaWxlVHlwZTogJ1PDqWxlY3Rpb25uZXIgdW4gdHlwZSBkZSBmaWNoaWVyJyxcbiAgICAgIGNvZGU6IHtcbiAgICAgICAgVU5SRUNPR05JWkVEOlxuICAgICAgICAgIFwiTGUgZmljaGllciBmb3VybmkgY29udGllbnQgdW5lIGNvbG9ubmUgwqtcXHUwMEEwe3tuYW1lfX1cXHUwMEEwwrssIHF1aSBuJ2VzdCBwYXMgcHLDqXNlbnRlIGRhbnMgbGUgamV1IGRlIGRvbm7DqWVzIGNob2lzaVwiLFxuICAgICAgICBGSUxFX01BTkRBVE9SWTogJ0F1Y3VuIGZpY2hpZXIgZm91cm5pJyxcbiAgICAgICAgTk9fQVRUUklCVVRFUzogXCJBdWN1biBhdHRyaWJ1dCBjb3JyZXNwb25kYW50IG4nYSDDqXTDqSB0cm91dsOpIGRhbnMgbGUgZmljaGllciBmb3VybmlcIixcbiAgICAgICAgRk9STUFUOlxuICAgICAgICAgIFwiwqtcXHUwMEEwe3tuYW1lfX1cXHUwMEEwwrs6IMKrXFx1MDBBMHt7cmVjZWl2ZWRWYWx1ZX19XFx1MDBBMMK7ICBuJ2EgcGFzIHB1IMOqdHJlIGNvbnZlcnRpZSBlbiB0eXBlIMKrXFx1MDBBMHt7dHlwZX19XFx1MDBBMMK7XCIsXG4gICAgICAgIFNUT1JBR0U6ICdTdG9yYWdlIHN0YWNrIHRyYWNlIGVycm9yOiB7e2VsYXN0aWNFcnJvcn19J1xuICAgICAgfSxcbiAgICAgIG5vcm1hbGl6ZTogJ05vcm1hbGlzZXIgbGVzIGZvcm1lcyBnw6lvZ3JhcGhpcXVlcydcbiAgICB9XG4gIH1cbn07XG4iXX0=
@@ -20,10 +20,13 @@ export class PryDefaultAccessService extends PryBaseAccess {
20
20
  canModifyDataset(dataset) {
21
21
  return of(dataset.owner ?? false);
22
22
  }
23
+ canModifyWidget(widget) {
24
+ return of(widget.owner ?? false);
25
+ }
23
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDefaultAccessService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
27
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDefaultAccessService }); }
25
28
  }
26
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryDefaultAccessService, decorators: [{
27
30
  type: Injectable
28
31
  }], ctorParameters: () => [] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9hY2Nlc3MvYWNjZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJdEMsTUFBTSxPQUFnQixhQUFhO0NBS2xDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWdCLGtCQUFrQixDQUFDLENBQUM7QUFHdEYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFDeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFUSxPQUFPLENBQUMsR0FBRyxJQUFXO1FBQzdCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFUSxxQkFBcUIsQ0FBQyxZQUFpQztRQUM5RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVRLFFBQVEsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFUSxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN4QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBbkJVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5pZmVzdERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFzZXQgfSBmcm9tICcuLi9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcnlCYXNlQWNjZXNzIHtcbiAgYWJzdHJhY3QgaGFzUm9sZSguLi5hcmdzOiBhbnlbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFic3RyYWN0IGNhbk1vZGlmeVByZXNlbnRhdGlvbihwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24pOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBoYXNHcm91cChncm91cDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgY2FuTW9kaWZ5RGF0YXNldChkYXRhc2V0OiBEYXRhc2V0KTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbn1cblxuZXhwb3J0IGNvbnN0IFBSWV9BQ0NFU1NfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UHJ5QmFzZUFjY2Vzcz4oJ1BSWV9BQ0NFU1NfVE9LRU4nKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFByeURlZmF1bHRBY2Nlc3NTZXJ2aWNlIGV4dGVuZHMgUHJ5QmFzZUFjY2VzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBvdmVycmlkZSBoYXNSb2xlKC4uLmFyZ3M6IGFueVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY2FuTW9kaWZ5UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZihwcmVzZW50YXRpb24/Lm93bmVyKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGhhc0dyb3VwKGdyb3VwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBjYW5Nb2RpZnlEYXRhc2V0KGRhdGFzZXQ6IERhdGFzZXQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2YoZGF0YXNldC5vd25lciA/PyBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvY29yZS9hY2Nlc3MvYWNjZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEMsTUFBTSxPQUFnQixhQUFhO0NBTWxDO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWdCLGtCQUFrQixDQUFDLENBQUM7QUFHdEYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGFBQWE7SUFDeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFUSxPQUFPLENBQUMsR0FBRyxJQUFXO1FBQzdCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFUSxxQkFBcUIsQ0FBQyxZQUFpQztRQUM5RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVRLFFBQVEsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFUSxnQkFBZ0IsQ0FBQyxPQUFnQjtRQUN4QyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFUSxlQUFlLENBQUMsTUFBYztRQUNyQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBdkJVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYW5pZmVzdERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFzZXQgfSBmcm9tICcuLi9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXQgfSBmcm9tICcuLi9tb2RlbC93aWRnZXQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByeUJhc2VBY2Nlc3Mge1xuICBhYnN0cmFjdCBoYXNSb2xlKC4uLmFyZ3M6IGFueVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgY2FuTW9kaWZ5UHJlc2VudGF0aW9uKHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbik6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGFic3RyYWN0IGhhc0dyb3VwKGdyb3VwOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBjYW5Nb2RpZnlEYXRhc2V0KGRhdGFzZXQ6IERhdGFzZXQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhYnN0cmFjdCBjYW5Nb2RpZnlXaWRnZXQod2lkZ2V0OiBXaWRnZXQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgY29uc3QgUFJZX0FDQ0VTU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcnlCYXNlQWNjZXNzPignUFJZX0FDQ0VTU19UT0tFTicpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJ5RGVmYXVsdEFjY2Vzc1NlcnZpY2UgZXh0ZW5kcyBQcnlCYXNlQWNjZXNzIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGhhc1JvbGUoLi4uYXJnczogYW55W10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gb2YodHJ1ZSk7XG4gIH1cblxuICBvdmVycmlkZSBjYW5Nb2RpZnlQcmVzZW50YXRpb24ocHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG9mKHByZXNlbnRhdGlvbj8ub3duZXIpO1xuICB9XG5cbiAgb3ZlcnJpZGUgaGFzR3JvdXAoZ3JvdXA6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNhbk1vZGlmeURhdGFzZXQoZGF0YXNldDogRGF0YXNldCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZihkYXRhc2V0Lm93bmVyID8/IGZhbHNlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNhbk1vZGlmeVdpZGdldCh3aWRnZXQ6IFdpZGdldCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBvZih3aWRnZXQub3duZXIgPz8gZmFsc2UpO1xuICB9XG59XG4iXX0=
@@ -14,9 +14,10 @@ export class DatasourceSelectorComponent extends SubscriptionnerDirective {
14
14
  this.manifest$.next(manifest);
15
15
  this.selectedIds$.next(DatasourceUtils.getDatasourceArray(manifest?.datasource));
16
16
  }
17
- constructor(store) {
17
+ constructor(store, cdr) {
18
18
  super();
19
19
  this.store = store;
20
+ this.cdr = cdr;
20
21
  this.manifest$ = new BehaviorSubject(null);
21
22
  this.selectedIds$ = new BehaviorSubject([]);
22
23
  this.showButtons = true;
@@ -26,11 +27,14 @@ export class DatasourceSelectorComponent extends SubscriptionnerDirective {
26
27
  this.cancel = new EventEmitter();
27
28
  this.validated = new EventEmitter();
28
29
  this.itemsChanged = new EventEmitter();
29
- this.datasources$ = combineLatest([
30
+ this.selectedDatasources$ = combineLatest([
30
31
  this.store.select(DataSourceSelectors.getDataSourcesSorted),
31
32
  this.selectedIds$
32
- ]).pipe(map(([datasources, selectedIds]) => DatasourceUtils.getAllDatasourcesWithUnknowns(datasources, selectedIds)));
33
- this.selectedDatasources$ = combineLatest([this.datasources$, this.selectedIds$]).pipe(map(([datasources, selected]) => datasources.filter((ds) => selected.includes(ds.id))));
33
+ ]).pipe(map(([datasources, selectedIds]) => DatasourceUtils.getAllDatasourcesWithUnknowns(datasources, selectedIds).filter((ds) => selectedIds.includes(ds.id))));
34
+ this.subscriptions.add(this.selectedIds$.subscribe((selectedIds) => {
35
+ this.itemsChanged.emit(selectedIds);
36
+ this.cdr.detectChanges();
37
+ }));
34
38
  }
35
39
  isGeo(item) {
36
40
  return DatasourceUtils.isGeo(item);
@@ -39,18 +43,19 @@ export class DatasourceSelectorComponent extends SubscriptionnerDirective {
39
43
  this.selectedIds$.next(this.selectedIds$.value.includes(id)
40
44
  ? this.selectedIds$.value.filter((i) => i !== id)
41
45
  : [...this.selectedIds$.value, id]);
46
+ this.cdr.detectChanges();
42
47
  }
43
48
  updateDatasourceList(ids) {
44
49
  this.selectedIds$.next(ids);
45
- this.itemsChanged.emit(ids);
50
+ this.cdr.detectChanges();
46
51
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DatasourceSelectorComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DatasourceSelectorComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
48
53
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: DatasourceSelectorComponent, selector: "pry-datasource-selector", inputs: { showButtons: "showButtons", showTitle: "showTitle", manifest: "manifest" }, outputs: { previousTab: "previousTab", nextTab: "nextTab", cancel: "cancel", validated: "validated", itemsChanged: "itemsChanged" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-datasource-selector u-display-flex -column\">\n @if (showTitle) {\n <h2 class=\"u-self-center\">{{ '@pry.components.datasourceSelector.select' | i18n }}</h2>\n }\n <div>\n <h3>\n {{ '@pry.components.datasourceSelector.selection' | i18n }} ({{ ((selectedDatasources$ | async) ?? []).length }})\n </h3>\n <div class=\"o-datasource-selector__chips u-display-flex -wrap -gap-10\">\n @if ((selectedDatasources$ | async)?.length === 0) {\n <span class=\"a-label -italic\">{{ '@pry.components.datasourceSelector.noItemSelected' | i18n }}</span>\n } @else {\n @for (datasource of selectedDatasources$ | async; track datasource.id) {\n <button\n class=\"a-chip a-chip--ghost -lg a-tooltip\"\n [attr.data-tooltip]=\"'@pry.components.datasourceSelector.unselectItem' | i18n\"\n type=\"button\"\n (click)=\"toggleSelection(datasource.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"15\" [height]=\"15\"></pry-icon>\n {{ datasource.name }}\n <pry-icon *ngIf=\"isGeo(datasource)\" iconSvg=\"globe\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n }\n </div>\n </div>\n <pry-datasource-list\n mode=\"selector\"\n [selectedDatasources]=\"(selectedIds$ | async) ?? []\"\n (datasourceSelected)=\"updateDatasourceList($event)\"\n ></pry-datasource-list>\n @if (showButtons) {\n <div class=\"m-btn-group o-datasource-selector__footer\">\n <button type=\"button\" (click)=\"cancel.emit()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n (click)=\"validated.emit()\"\n #validate\n (keydown.tab)=\"nextTab.emit()\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryDatasourceListComponent, selector: "pry-datasource-list", inputs: ["mode", "selectedDatasources"], outputs: ["consultedDataset", "datasourceSelected"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
49
54
  }
50
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DatasourceSelectorComponent, decorators: [{
51
56
  type: Component,
52
57
  args: [{ selector: 'pry-datasource-selector', template: "<div class=\"o-datasource-selector u-display-flex -column\">\n @if (showTitle) {\n <h2 class=\"u-self-center\">{{ '@pry.components.datasourceSelector.select' | i18n }}</h2>\n }\n <div>\n <h3>\n {{ '@pry.components.datasourceSelector.selection' | i18n }} ({{ ((selectedDatasources$ | async) ?? []).length }})\n </h3>\n <div class=\"o-datasource-selector__chips u-display-flex -wrap -gap-10\">\n @if ((selectedDatasources$ | async)?.length === 0) {\n <span class=\"a-label -italic\">{{ '@pry.components.datasourceSelector.noItemSelected' | i18n }}</span>\n } @else {\n @for (datasource of selectedDatasources$ | async; track datasource.id) {\n <button\n class=\"a-chip a-chip--ghost -lg a-tooltip\"\n [attr.data-tooltip]=\"'@pry.components.datasourceSelector.unselectItem' | i18n\"\n type=\"button\"\n (click)=\"toggleSelection(datasource.id)\"\n >\n <pry-icon iconSvg=\"close\" [width]=\"15\" [height]=\"15\"></pry-icon>\n {{ datasource.name }}\n <pry-icon *ngIf=\"isGeo(datasource)\" iconSvg=\"globe\" [width]=\"18\" [height]=\"18\"></pry-icon>\n </button>\n }\n }\n </div>\n </div>\n <pry-datasource-list\n mode=\"selector\"\n [selectedDatasources]=\"(selectedIds$ | async) ?? []\"\n (datasourceSelected)=\"updateDatasourceList($event)\"\n ></pry-datasource-list>\n @if (showButtons) {\n <div class=\"m-btn-group o-datasource-selector__footer\">\n <button type=\"button\" (click)=\"cancel.emit()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"button\"\n (click)=\"validated.emit()\"\n #validate\n (keydown.tab)=\"nextTab.emit()\"\n class=\"a-btn a-btn--primary\"\n >\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n }\n</div>\n" }]
53
- }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { showButtons: [{
58
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i0.ChangeDetectorRef }], propDecorators: { showButtons: [{
54
59
  type: Input
55
60
  }], showTitle: [{
56
61
  type: Input
@@ -67,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImpor
67
72
  }], itemsChanged: [{
68
73
  type: Output
69
74
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhc291cmNlLXNlbGVjdG9yL2RhdGFzb3VyY2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvZGF0YXNvdXJjZS1zZWxlY3Rvci9kYXRhc291cmNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQU0vRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsd0JBQXdCO0lBU3ZFLElBQWEsUUFBUSxDQUFDLFFBQStCO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBUUQsWUFBb0IsS0FBWTtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQU87UUFsQmhDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7UUFHN0QsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUV4QyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBTWhCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFLcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVk7U0FDbEIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUM3RyxDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRixHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFnQjtRQUNwQixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFVO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFhO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBbERVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGlUQ2J4Qyx1N0RBaURBOzsyRkRwQ2EsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLHlCQUF5QjswRUFVMUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zdWJzY3JpcHRpb25uZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGFzb3VyY2VVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YXNvdXJjZS11dGlscyc7XG5pbXBvcnQgeyBEYXRhU291cmNlU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5zZWxlY3RvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktZGF0YXNvdXJjZS1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF0YXNvdXJjZS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXNvdXJjZVNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgZGF0YXNvdXJjZXMkOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VbXT47XG4gIG1hbmlmZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2lkZ2V0TWFuaWZlc3QgfCBudWxsPihudWxsKTtcbiAgc2VsZWN0ZWREYXRhc291cmNlcyQ6IE9ic2VydmFibGU8RGF0YVNvdXJjZVtdPjtcblxuICBzZWxlY3RlZElkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG5cbiAgQElucHV0KCkgc2hvd0J1dHRvbnMgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICBASW5wdXQoKSBzZXQgbWFuaWZlc3QobWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0IHwgbnVsbCkge1xuICAgIHRoaXMubWFuaWZlc3QkLm5leHQobWFuaWZlc3QpO1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMkLm5leHQoRGF0YXNvdXJjZVV0aWxzLmdldERhdGFzb3VyY2VBcnJheShtYW5pZmVzdD8uZGF0YXNvdXJjZSkpO1xuICB9XG5cbiAgQE91dHB1dCgpIHByZXZpb3VzVGFiID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbmV4dFRhYiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhc291cmNlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZ2V0RGF0YVNvdXJjZXNTb3J0ZWQpLFxuICAgICAgdGhpcy5zZWxlY3RlZElkcyRcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbZGF0YXNvdXJjZXMsIHNlbGVjdGVkSWRzXSkgPT4gRGF0YXNvdXJjZVV0aWxzLmdldEFsbERhdGFzb3VyY2VzV2l0aFVua25vd25zKGRhdGFzb3VyY2VzLCBzZWxlY3RlZElkcykpXG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWREYXRhc291cmNlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRhdGFzb3VyY2VzJCwgdGhpcy5zZWxlY3RlZElkcyRdKS5waXBlKFxuICAgICAgbWFwKChbZGF0YXNvdXJjZXMsIHNlbGVjdGVkXSkgPT4gZGF0YXNvdXJjZXMuZmlsdGVyKChkcykgPT4gc2VsZWN0ZWQuaW5jbHVkZXMoZHMuaWQpKSlcbiAgICApO1xuICB9XG5cbiAgaXNHZW8oaXRlbTogRGF0YVNvdXJjZSkge1xuICAgIHJldHVybiBEYXRhc291cmNlVXRpbHMuaXNHZW8oaXRlbSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb24oaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMkLm5leHQoXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzJC52YWx1ZS5pbmNsdWRlcyhpZClcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkSWRzJC52YWx1ZS5maWx0ZXIoKGkpID0+IGkgIT09IGlkKVxuICAgICAgICA6IFsuLi50aGlzLnNlbGVjdGVkSWRzJC52YWx1ZSwgaWRdXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZURhdGFzb3VyY2VMaXN0KGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNlbGVjdGVkSWRzJC5uZXh0KGlkcyk7XG4gICAgdGhpcy5pdGVtc0NoYW5nZWQuZW1pdChpZHMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiby1kYXRhc291cmNlLXNlbGVjdG9yIHUtZGlzcGxheS1mbGV4IC1jb2x1bW5cIj5cbiAgQGlmIChzaG93VGl0bGUpIHtcbiAgICA8aDIgY2xhc3M9XCJ1LXNlbGYtY2VudGVyXCI+e3sgJ0BwcnkuY29tcG9uZW50cy5kYXRhc291cmNlU2VsZWN0b3Iuc2VsZWN0JyB8IGkxOG4gfX08L2gyPlxuICB9XG4gIDxkaXY+XG4gICAgPGgzPlxuICAgICAge3sgJ0BwcnkuY29tcG9uZW50cy5kYXRhc291cmNlU2VsZWN0b3Iuc2VsZWN0aW9uJyB8IGkxOG4gfX0gKHt7ICgoc2VsZWN0ZWREYXRhc291cmNlcyQgfCBhc3luYykgPz8gW10pLmxlbmd0aCB9fSlcbiAgICA8L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJvLWRhdGFzb3VyY2Utc2VsZWN0b3JfX2NoaXBzIHUtZGlzcGxheS1mbGV4IC13cmFwIC1nYXAtMTBcIj5cbiAgICAgIEBpZiAoKHNlbGVjdGVkRGF0YXNvdXJjZXMkIHwgYXN5bmMpPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhLWxhYmVsIC1pdGFsaWNcIj57eyAnQHByeS5jb21wb25lbnRzLmRhdGFzb3VyY2VTZWxlY3Rvci5ub0l0ZW1TZWxlY3RlZCcgfCBpMThuIH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBmb3IgKGRhdGFzb3VyY2Ugb2Ygc2VsZWN0ZWREYXRhc291cmNlcyQgfCBhc3luYzsgdHJhY2sgZGF0YXNvdXJjZS5pZCkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYS1jaGlwIGEtY2hpcC0tZ2hvc3QgLWxnIGEtdG9vbHRpcFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJ0BwcnkuY29tcG9uZW50cy5kYXRhc291cmNlU2VsZWN0b3IudW5zZWxlY3RJdGVtJyB8IGkxOG5cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uKGRhdGFzb3VyY2UuaWQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgICB7eyBkYXRhc291cmNlLm5hbWUgfX1cbiAgICAgICAgICAgIDxwcnktaWNvbiAqbmdJZj1cImlzR2VvKGRhdGFzb3VyY2UpXCIgaWNvblN2Zz1cImdsb2JlXCIgW3dpZHRoXT1cIjE4XCIgW2hlaWdodF09XCIxOFwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxwcnktZGF0YXNvdXJjZS1saXN0XG4gICAgbW9kZT1cInNlbGVjdG9yXCJcbiAgICBbc2VsZWN0ZWREYXRhc291cmNlc109XCIoc2VsZWN0ZWRJZHMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICAoZGF0YXNvdXJjZVNlbGVjdGVkKT1cInVwZGF0ZURhdGFzb3VyY2VMaXN0KCRldmVudClcIlxuICA+PC9wcnktZGF0YXNvdXJjZS1saXN0PlxuICBAaWYgKHNob3dCdXR0b25zKSB7XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwIG8tZGF0YXNvdXJjZS1zZWxlY3Rvcl9fZm9vdGVyXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsLmVtaXQoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlZC5lbWl0KClcIlxuICAgICAgICAjdmFsaWRhdGVcbiAgICAgICAgKGtleWRvd24udGFiKT1cIm5leHRUYWIuZW1pdCgpXCJcbiAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QudmFsaWRhdGVkJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhc291cmNlLXNlbGVjdG9yL2RhdGFzb3VyY2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbGliL2Rhc2hib2FyZC9jb21wb25lbnRzL3dpZGdldHMvZGF0YXNvdXJjZS1zZWxlY3Rvci9kYXRhc291cmNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUd2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMERBQTBELENBQUM7Ozs7Ozs7QUFNL0YsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHdCQUF3QjtJQVF2RSxJQUFhLFFBQVEsQ0FBQyxRQUErQjtRQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQVFELFlBQ1UsS0FBWSxFQUNaLEdBQXNC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bmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhLXNvdXJjZS5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3N1YnNjcmlwdGlvbm5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YXNvdXJjZVV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zdG9yZS9kYXRhLXNvdXJjZS9kYXRhc291cmNlLXV0aWxzJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLnNlbGVjdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1kYXRhc291cmNlLXNlbGVjdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICdkYXRhc291cmNlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhc291cmNlU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUge1xuICBtYW5pZmVzdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdpZGdldE1hbmlmZXN0IHwgbnVsbD4obnVsbCk7XG4gIHNlbGVjdGVkRGF0YXNvdXJjZXMkOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VbXT47XG5cbiAgc2VsZWN0ZWRJZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuXG4gIEBJbnB1dCgpIHNob3dCdXR0b25zID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1RpdGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2V0IG1hbmlmZXN0KG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdCB8IG51bGwpIHtcbiAgICB0aGlzLm1hbmlmZXN0JC5uZXh0KG1hbmlmZXN0KTtcbiAgICB0aGlzLnNlbGVjdGVkSWRzJC5uZXh0KERhdGFzb3VyY2VVdGlscy5nZXREYXRhc291cmNlQXJyYXkobWFuaWZlc3Q/LmRhdGFzb3VyY2UpKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwcmV2aW91c1RhYiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG5leHRUYWIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB2YWxpZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zZWxlY3RlZERhdGFzb3VyY2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGF0YVNvdXJjZVNlbGVjdG9ycy5nZXREYXRhU291cmNlc1NvcnRlZCksXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtkYXRhc291cmNlcywgc2VsZWN0ZWRJZHNdKSA9PlxuICAgICAgICBEYXRhc291cmNlVXRpbHMuZ2V0QWxsRGF0YXNvdXJjZXNXaXRoVW5rbm93bnMoZGF0YXNvdXJjZXMsIHNlbGVjdGVkSWRzKS5maWx0ZXIoKGRzKSA9PlxuICAgICAgICAgIHNlbGVjdGVkSWRzLmluY2x1ZGVzKGRzLmlkKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5zZWxlY3RlZElkcyQuc3Vic2NyaWJlKChzZWxlY3RlZElkcykgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlZC5lbWl0KHNlbGVjdGVkSWRzKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaXNHZW8oaXRlbTogRGF0YVNvdXJjZSkge1xuICAgIHJldHVybiBEYXRhc291cmNlVXRpbHMuaXNHZW8oaXRlbSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb24oaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRJZHMkLm5leHQoXG4gICAgICB0aGlzLnNlbGVjdGVkSWRzJC52YWx1ZS5pbmNsdWRlcyhpZClcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkSWRzJC52YWx1ZS5maWx0ZXIoKGkpID0+IGkgIT09IGlkKVxuICAgICAgICA6IFsuLi50aGlzLnNlbGVjdGVkSWRzJC52YWx1ZSwgaWRdXG4gICAgKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1cGRhdGVEYXRhc291cmNlTGlzdChpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zZWxlY3RlZElkcyQubmV4dChpZHMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tZGF0YXNvdXJjZS1zZWxlY3RvciB1LWRpc3BsYXktZmxleCAtY29sdW1uXCI+XG4gIEBpZiAoc2hvd1RpdGxlKSB7XG4gICAgPGgyIGNsYXNzPVwidS1zZWxmLWNlbnRlclwiPnt7ICdAcHJ5LmNvbXBvbmVudHMuZGF0YXNvdXJjZVNlbGVjdG9yLnNlbGVjdCcgfCBpMThuIH19PC9oMj5cbiAgfVxuICA8ZGl2PlxuICAgIDxoMz5cbiAgICAgIHt7ICdAcHJ5LmNvbXBvbmVudHMuZGF0YXNvdXJjZVNlbGVjdG9yLnNlbGVjdGlvbicgfCBpMThuIH19ICh7eyAoKHNlbGVjdGVkRGF0YXNvdXJjZXMkIHwgYXN5bmMpID8/IFtdKS5sZW5ndGggfX0pXG4gICAgPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwiby1kYXRhc291cmNlLXNlbGVjdG9yX19jaGlwcyB1LWRpc3BsYXktZmxleCAtd3JhcCAtZ2FwLTEwXCI+XG4gICAgICBAaWYgKChzZWxlY3RlZERhdGFzb3VyY2VzJCB8IGFzeW5jKT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYS1sYWJlbCAtaXRhbGljXCI+e3sgJ0BwcnkuY29tcG9uZW50cy5kYXRhc291cmNlU2VsZWN0b3Iubm9JdGVtU2VsZWN0ZWQnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChkYXRhc291cmNlIG9mIHNlbGVjdGVkRGF0YXNvdXJjZXMkIHwgYXN5bmM7IHRyYWNrIGRhdGFzb3VyY2UuaWQpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtY2hpcCBhLWNoaXAtLWdob3N0IC1sZyBhLXRvb2x0aXBcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LmNvbXBvbmVudHMuZGF0YXNvdXJjZVNlbGVjdG9yLnVuc2VsZWN0SXRlbScgfCBpMThuXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvbihkYXRhc291cmNlLmlkKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAge3sgZGF0YXNvdXJjZS5uYW1lIH19XG4gICAgICAgICAgICA8cHJ5LWljb24gKm5nSWY9XCJpc0dlbyhkYXRhc291cmNlKVwiIGljb25Tdmc9XCJnbG9iZVwiIFt3aWR0aF09XCIxOFwiIFtoZWlnaHRdPVwiMThcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cHJ5LWRhdGFzb3VyY2UtbGlzdFxuICAgIG1vZGU9XCJzZWxlY3RvclwiXG4gICAgW3NlbGVjdGVkRGF0YXNvdXJjZXNdPVwiKHNlbGVjdGVkSWRzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgKGRhdGFzb3VyY2VTZWxlY3RlZCk9XCJ1cGRhdGVEYXRhc291cmNlTGlzdCgkZXZlbnQpXCJcbiAgPjwvcHJ5LWRhdGFzb3VyY2UtbGlzdD5cbiAgQGlmIChzaG93QnV0dG9ucykge1xuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCBvLWRhdGFzb3VyY2Utc2VsZWN0b3JfX2Zvb3RlclwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbC5lbWl0KClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ2YWxpZGF0ZWQuZW1pdCgpXCJcbiAgICAgICAgI3ZhbGlkYXRlXG4gICAgICAgIChrZXlkb3duLnRhYik9XCJuZXh0VGFiLmVtaXQoKVwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlZCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { OverlayConfig } from '@angular/cdk/overlay';
2
- import { Component, TemplateRef, ViewChild } from '@angular/core';
3
- import { ConfigActions, ConfigSelectors, ViewMode } from '@provoly/dashboard';
4
- import { BehaviorSubject, combineLatest, map } from 'rxjs';
2
+ import { Component, Inject, Optional, TemplateRef, ViewChild } from '@angular/core';
3
+ import { ConfigActions, ConfigSelectors, PRY_ACCESS_TOKEN, ViewMode } from '@provoly/dashboard';
4
+ import { BehaviorSubject, combineLatest, map, of } from 'rxjs';
5
5
  import { TemplatePortal } from '@angular/cdk/portal';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@ngrx/store";
@@ -12,10 +12,11 @@ import * as i5 from "@angular/forms";
12
12
  import * as i6 from "../restitution/restitution.component";
13
13
  import * as i7 from "../../style/css.component";
14
14
  export class PryRestitutionCatalogComponent {
15
- constructor(store, overlay, viewContainerRef) {
15
+ constructor(store, overlay, viewContainerRef, access) {
16
16
  this.store = store;
17
17
  this.overlay = overlay;
18
18
  this.viewContainerRef = viewContainerRef;
19
+ this.access = access;
19
20
  this.search$ = new BehaviorSubject('');
20
21
  this.mode = ViewMode;
21
22
  this.selectedMode = ViewMode.CATALOG;
@@ -26,6 +27,8 @@ export class PryRestitutionCatalogComponent {
26
27
  .select(ConfigSelectors.catalog)
27
28
  .pipe(map((restitutionList) => [...restitutionList].sort((a, b) => a.modificationDate ? b.modificationDate.localeCompare(a.modificationDate) : 1)));
28
29
  this.filteredRestitution$ = combineLatest([this.restitutions$, this.search$]).pipe(map(([restitutions, search]) => restitutions.filter((restitution) => search.length === 0 || restitution.name.toLowerCase().includes(search.toLowerCase()))));
30
+ this.canModify$ =
31
+ this.access && this.selectedRestitution ? this.access.canModifyWidget(this.selectedRestitution) : of(false);
29
32
  }
30
33
  selectMode(newMode) {
31
34
  this.selectedMode = newMode;
@@ -73,14 +76,19 @@ export class PryRestitutionCatalogComponent {
73
76
  this.selectedRestitution = null;
74
77
  }
75
78
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryRestitutionCatalogComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: PryRestitutionCatalogComponent, selector: "pry-restitution-catalog", viewQueries: [{ propertyName: "templateActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-manifest-layout o-restitution-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n type=\"button\"\n (click)=\"selectMode(mode.CREATION)\"\n class=\"a-btn a-btn--primary\"\n data-tooltip-position=\"bottom\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.restitution.create' | i18n }}\n </button>\n <div>\n <div class=\"o-catalog__search o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.restitution.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.restitution.catalog' | i18n }}</h1>\n\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let restitution of filteredRestitution$ | async; let index = index\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"restitution.groups?.length === 0\">\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.restitution.lock' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"restitution.image | getSecuredImage: [600, 600] | async\" />\n </div>\n </div>\n <ng-container *ngIf=\"restitution.owner\">\n <div class=\"more-button\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(restitution, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div\n class=\"o-presentation__item__txt\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ restitution.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ restitution.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ restitution.modificationDate | sinceDate }}</p>\n </div>\n\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.restitution.view' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-template>\n <ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n *ngIf=\"selectedRestitution\"\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog restitution options\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editRestitution(selectedRestitution)\"\n [disabled]=\"!selectedRestitution.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'edit' }\"\n >\n {{ '@pry.restitution.update' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"deleteRestitution(selectedRestitution.id)\"\n [disabled]=\"!selectedRestitution.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'delete' }\"\n >\n {{ '@pry.restitution.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.EDITION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n (restitutionCreated)=\"closeRestitution($event)\"\n [selectedRestitution]=\"selectedRestitution\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PryRestitutionComponent, selector: "pry-restitution", inputs: ["selectedRestitution", "edit", "isDataSourceSelected", "bindId"], outputs: ["restitutionCreated"] }, { kind: "component", type: i7.PryCatalogCssComponent, selector: "pry-restitution-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryRestitutionCatalogComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }, { token: PRY_ACCESS_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.3", type: PryRestitutionCatalogComponent, selector: "pry-restitution-catalog", viewQueries: [{ propertyName: "templateActions", first: true, predicate: ["modalActions"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-manifest-layout o-restitution-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n type=\"button\"\n (click)=\"selectMode(mode.CREATION)\"\n class=\"a-btn a-btn--primary\"\n data-tooltip-position=\"bottom\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.restitution.create' | i18n }}\n </button>\n <div>\n <div class=\"o-catalog__search o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.restitution.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.restitution.catalog' | i18n }}</h1>\n\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let restitution of filteredRestitution$ | async; let index = index\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"restitution.groups?.length === 0\">\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.restitution.lock' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"restitution.image | getSecuredImage: [600, 600] | async\" />\n </div>\n </div>\n @if (canModify$ | async) {\n <div class=\"more-button\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(restitution, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div\n class=\"o-presentation__item__txt\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ restitution.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ restitution.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ restitution.modificationDate | sinceDate }}</p>\n </div>\n\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.restitution.view' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-template>\n <ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n *ngIf=\"selectedRestitution\"\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog restitution options\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editRestitution(selectedRestitution)\"\n [disabled]=\"!(canModify$ | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'edit' }\"\n >\n {{ '@pry.restitution.update' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"deleteRestitution(selectedRestitution.id)\"\n [disabled]=\"!(canModify$ | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'delete' }\"\n >\n {{ '@pry.restitution.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.EDITION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n (restitutionCreated)=\"closeRestitution($event)\"\n [selectedRestitution]=\"selectedRestitution\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.PryAccessDirective, selector: "[pryAccess]", inputs: ["pryAccess"] }, { kind: "directive", type: i4.EllipsisDirective, selector: "[ellipsis]", inputs: ["textElementSelector"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.PryRestitutionComponent, selector: "pry-restitution", inputs: ["selectedRestitution", "edit", "isDataSourceSelected", "bindId"], outputs: ["restitutionCreated"] }, { kind: "component", type: i7.PryCatalogCssComponent, selector: "pry-restitution-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.GetSecuredImagePipe, name: "getSecuredImage" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
78
81
  }
79
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PryRestitutionCatalogComponent, decorators: [{
80
83
  type: Component,
81
- args: [{ selector: 'pry-restitution-catalog', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-manifest-layout o-restitution-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n type=\"button\"\n (click)=\"selectMode(mode.CREATION)\"\n class=\"a-btn a-btn--primary\"\n data-tooltip-position=\"bottom\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.restitution.create' | i18n }}\n </button>\n <div>\n <div class=\"o-catalog__search o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.restitution.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.restitution.catalog' | i18n }}</h1>\n\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let restitution of filteredRestitution$ | async; let index = index\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"restitution.groups?.length === 0\">\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.restitution.lock' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"restitution.image | getSecuredImage: [600, 600] | async\" />\n </div>\n </div>\n <ng-container *ngIf=\"restitution.owner\">\n <div class=\"more-button\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(restitution, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n </ng-container>\n </div>\n <div\n class=\"o-presentation__item__txt\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ restitution.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ restitution.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ restitution.modificationDate | sinceDate }}</p>\n </div>\n\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.restitution.view' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-template>\n <ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n *ngIf=\"selectedRestitution\"\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog restitution options\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editRestitution(selectedRestitution)\"\n [disabled]=\"!selectedRestitution.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'edit' }\"\n >\n {{ '@pry.restitution.update' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"deleteRestitution(selectedRestitution.id)\"\n [disabled]=\"!selectedRestitution.owner\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'delete' }\"\n >\n {{ '@pry.restitution.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.EDITION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n (restitutionCreated)=\"closeRestitution($event)\"\n [selectedRestitution]=\"selectedRestitution\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n</div>\n" }]
82
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }], propDecorators: { templateActions: [{
84
+ args: [{ selector: 'pry-restitution-catalog', template: "<pry-restitution-css></pry-restitution-css>\n<div class=\"o-manifest-layout o-restitution-catalog\">\n <ng-template [ngIf]=\"selectedMode === mode.CATALOG\">\n <div class=\"o-manifest-layout__toolbox\">\n <button\n type=\"button\"\n (click)=\"selectMode(mode.CREATION)\"\n class=\"a-btn a-btn--primary\"\n data-tooltip-position=\"bottom\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'create' }\"\n >\n <pry-icon iconSvg=\"add\"></pry-icon>\n {{ '@pry.restitution.create' | i18n }}\n </button>\n <div>\n <div class=\"o-catalog__search o-manifest-layout__toolbox__search\">\n <label id=\"catalog-search-label\" for=\"catalog-search\" class=\"u-visually-hidden\">\n <span>{{ '@pry.toolbox.catalog.filter.name' | i18n }}</span>\n </label>\n <input\n id=\"catalog-search\"\n type=\"text\"\n class=\"a-form-field\"\n [placeholder]=\"'@pry.restitution.search' | i18n\"\n [ngModel]=\"search$ | async\"\n (ngModelChange)=\"this.search$.next($event)\"\n />\n\n <pry-icon iconSvg=\"search\" [width]=\"17\" [height]=\"17\"></pry-icon>\n </div>\n </div>\n </div>\n <div class=\"o-manifest-layout__content\">\n <h1 class=\"a-h1\">{{ '@pry.restitution.catalog' | i18n }}</h1>\n\n <div class=\"o-presentation-wrapper\">\n <ul class=\"o-presentation\">\n <li class=\"o-presentation__item\" *ngFor=\"let restitution of filteredRestitution$ | async; let index = index\">\n <div class=\"o-presentation__item__header\">\n <ng-container *ngIf=\"restitution.groups?.length === 0\">\n <pry-icon\n iconSvg=\"private\"\n class=\"is-private a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.restitution.lock' | i18n\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </ng-container>\n <div\n class=\"a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__image\">\n <img alt=\"\" class=\"is-full-width\" [src]=\"restitution.image | getSecuredImage: [600, 600] | async\" />\n </div>\n </div>\n @if (canModify$ | async) {\n <div class=\"more-button\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--more a-tooltip -tooltip-no-wrap\"\n [id]=\"'more-actions-' + index\"\n [attr.data-tooltip]=\"'@pry.restitution.more' | i18n\"\n (click)=\"toggleModalActions(restitution, button)\"\n #button\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"more_horiz\"></pry-icon>\n </button>\n </div>\n }\n </div>\n <div\n class=\"o-presentation__item__txt\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <div class=\"o-presentation__item__title-container\" ellipsis textElementSelector=\".a-h3\">\n <h3 class=\"a-h3\">{{ restitution.name }}</h3>\n </div>\n <div class=\"o-presentation__item__description-container\" ellipsis textElementSelector=\".a-p\">\n <div class=\"o-presentation__item__description a-p\">\n {{ restitution.description }}\n </div>\n </div>\n <p class=\"a-p -date\">{{ restitution.modificationDate | sinceDate }}</p>\n </div>\n\n <div\n class=\"o-presentation__item__footer a-tooltip -tooltip-no-wrap\"\n (click)=\"selectRestitution(restitution)\"\n [attr.data-tooltip]=\"'@pry.restitution.consultRestitution' | i18n\"\n >\n <button class=\"a-btn\">\n {{ '@pry.restitution.view' | i18n }}\n <pry-icon [width]=\"20\" [height]=\"20\" iconSvg=\"arrow_right\"></pry-icon>\n </button>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </ng-template>\n <ng-template #modalActions>\n <div class=\"m-context-menu\">\n <ul\n *ngIf=\"selectedRestitution\"\n class=\"m-context-menu__list\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog restitution options\"\n >\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n (click)=\"editRestitution(selectedRestitution)\"\n [disabled]=\"!(canModify$ | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'edit' }\"\n >\n {{ '@pry.restitution.update' | i18n }}\n </button>\n </li>\n <li class=\"m-context-menu__list__item\">\n <button\n class=\"a-btn -link-like\"\n #openModal\n (click)=\"deleteRestitution(selectedRestitution.id)\"\n [disabled]=\"!(canModify$ | async)\"\n *pryAccess=\"{ module: 'dashboard', page: 'restitution', action: 'delete' }\"\n >\n {{ '@pry.restitution.delete' | i18n }}\n </button>\n </li>\n </ul>\n </div>\n </ng-template>\n\n <ng-template [ngIf]=\"selectedMode === mode.CONSULT\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [selectedRestitution]=\"selectedRestitution\"\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.CREATION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n [edit]=\"false\"\n (restitutionCreated)=\"closeRestitution($event)\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"selectedMode === mode.EDITION\">\n <div class=\"o-manifest-layout__toolbox\">\n <button type=\"button\" (click)=\"selectMode(mode.CATALOG)\" class=\"a-btn a-btn--primary\">\n {{ '@pry.restitution.backToCatalog' | i18n }}\n </button>\n </div>\n <div class=\"o-manifest-layout__content\">\n <pry-restitution\n (restitutionCreated)=\"closeRestitution($event)\"\n [selectedRestitution]=\"selectedRestitution\"\n class=\"restitution\"\n ></pry-restitution>\n </div>\n </ng-template>\n</div>\n" }]
85
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }, { type: i4.PryBaseAccess, decorators: [{
86
+ type: Optional
87
+ }, {
88
+ type: Inject,
89
+ args: [PRY_ACCESS_TOKEN]
90
+ }] }], propDecorators: { templateActions: [{
83
91
  type: ViewChild,
84
92
  args: ['modalActions', { read: TemplateRef }]
85
93
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWNhdGFsb2cvcmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWNhdGFsb2cvcmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNckQsTUFBTSxPQUFPLDhCQUE4QjtJQVd6QyxZQUNVLEtBQVksRUFDVixPQUFnQixFQUNoQixnQkFBa0M7UUFGcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVo5QyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEMsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixpQkFBWSxHQUFhLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFDMUMsd0JBQW1CLEdBQWtCLElBQUksQ0FBQztRQVV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUVsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLO2FBQzVCLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO2FBQy9CLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUN0QixDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ2pDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RSxDQUNGLENBQ0YsQ0FBQztRQUNKLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEYsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUM3QixZQUFZLENBQUMsTUFBTSxDQUNqQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ3RHLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFpQjtRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsV0FBbUI7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQVk7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlLENBQUMsV0FBbUI7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxXQUFvQixFQUFFLFVBQThCO1FBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDbkMsSUFBSSxhQUFhLENBQUM7Z0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdEMsYUFBYSxFQUFFLFVBQVU7YUFDMUIsQ0FBQyxDQUNILENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDeEYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBbUIsQ0FBQztZQUNuRixJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSxHQUFHLFVBQVUsRUFBRSxxQkFBcUIsRUFBRSxDQUFDO2dCQUNqRCxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ3pGLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs4R0F4RlUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsMkpBU04sV0FBVyw2QkNwQmhELDgxT0FxTEE7OzJGRDFLYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UseUJBQXlCOytIQVllLGVBQWU7c0JBQWhFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgQ29uZmlnQWN0aW9ucywgQ29uZmlnU2VsZWN0b3JzLCBWaWV3TW9kZSwgV2lkZ2V0IH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcmVzdGl0dXRpb24tY2F0YWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0aXR1dGlvbi1jYXRhbG9nLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlSZXN0aXR1dGlvbkNhdGFsb2dDb21wb25lbnQge1xuICByZXN0aXR1dGlvbnMkOiBPYnNlcnZhYmxlPFdpZGdldFtdPjtcbiAgc2VhcmNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBmaWx0ZXJlZFJlc3RpdHV0aW9uJDogT2JzZXJ2YWJsZTxXaWRnZXRbXT47XG4gIG1vZGUgPSBWaWV3TW9kZTtcbiAgc2VsZWN0ZWRNb2RlOiBWaWV3TW9kZSA9IFZpZXdNb2RlLkNBVEFMT0c7XG4gIHNlbGVjdGVkUmVzdGl0dXRpb246IFdpZGdldCB8IG51bGwgPSBudWxsO1xuICByZXN0aXR1dGlvbj86IFdpZGdldDtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsQWN0aW9ucycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVBY3Rpb25zITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcm90ZWN0ZWQgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMubG9hZFdpZGdldHMoKSk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmdldE1hcFN0eWxlcygpKTtcblxuICAgIHRoaXMucmVzdGl0dXRpb25zJCA9IHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoQ29uZmlnU2VsZWN0b3JzLmNhdGFsb2cpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN0aXR1dGlvbkxpc3QpID0+XG4gICAgICAgICAgWy4uLnJlc3RpdHV0aW9uTGlzdF0uc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgIGEubW9kaWZpY2F0aW9uRGF0ZSA/IGIubW9kaWZpY2F0aW9uRGF0ZS5sb2NhbGVDb21wYXJlKGEubW9kaWZpY2F0aW9uRGF0ZSkgOiAxXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIHRoaXMuZmlsdGVyZWRSZXN0aXR1dGlvbiQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3RpdHV0aW9ucyQsIHRoaXMuc2VhcmNoJF0pLnBpcGUoXG4gICAgICBtYXAoKFtyZXN0aXR1dGlvbnMsIHNlYXJjaF0pID0+XG4gICAgICAgIHJlc3RpdHV0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgKHJlc3RpdHV0aW9uKSA9PiBzZWFyY2gubGVuZ3RoID09PSAwIHx8IHJlc3RpdHV0aW9uLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBzZWxlY3RNb2RlKG5ld01vZGU6IFZpZXdNb2RlKSB7XG4gICAgdGhpcy5zZWxlY3RlZE1vZGUgPSBuZXdNb2RlO1xuICB9XG5cbiAgc2VsZWN0UmVzdGl0dXRpb24ocmVzdGl0dXRpb246IFdpZGdldCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbiA9IHJlc3RpdHV0aW9uO1xuICAgIHRoaXMuc2VsZWN0TW9kZSh0aGlzLm1vZGUuQ09OU1VMVCk7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoJycpO1xuICB9XG5cbiAgY2xvc2VSZXN0aXR1dGlvbigkZXZlbnQ6IHZvaWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24gPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0TW9kZSh0aGlzLm1vZGUuQ0FUQUxPRyk7XG4gIH1cblxuICBkZWxldGVSZXN0aXR1dGlvbihpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNvbmZpcm1SZXN0aXR1dGlvbkRlbGV0aW9uKHsgaWQgfSkpO1xuICAgIHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKCk7XG4gIH1cblxuICBlZGl0UmVzdGl0dXRpb24ocmVzdGl0dXRpb246IFdpZGdldCkge1xuICAgIHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbiA9IHJlc3RpdHV0aW9uO1xuICAgIHRoaXMuc2VsZWN0TW9kZShWaWV3TW9kZS5FRElUSU9OKTtcbiAgICB0aGlzLnNlYXJjaCQubmV4dCgnJyk7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWxBY3Rpb25zKHJlc3RpdHV0aW9uPzogV2lkZ2V0LCBtb3JlQnV0dG9uPzogSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiAmJiByZXN0aXR1dGlvbikge1xuICAgICAgdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uID0gcmVzdGl0dXRpb247XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydtLWNvbnRleHQtbWVudS13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudG9nZ2xlTW9kYWxBY3Rpb25zKHJlc3RpdHV0aW9uKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlQWN0aW9ucywgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgICBjb25zdCBjb250ZXh0TWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5tLWNvbnRleHQtbWVudScpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgaWYgKCEhY29udGV4dE1lbnUgJiYgbW9yZUJ1dHRvbikge1xuICAgICAgICBjb25zdCByZWN0ID0gbW9yZUJ1dHRvbj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnRleHRNZW51LnN0eWxlLmxlZnQgPSAocmVjdD8ubGVmdCA/PyAwKSAtIChjb250ZXh0TWVudT8uY2xpZW50V2lkdGggPz8gMCkgKyAyMyArICdweCc7XG4gICAgICAgIGNvbnRleHRNZW51LnN0eWxlLnRvcCA9IChyZWN0Py50b3AgPz8gMCkgKyAzMCArICdweCc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxwcnktcmVzdGl0dXRpb24tY3NzPjwvcHJ5LXJlc3RpdHV0aW9uLWNzcz5cbjxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dCBvLXJlc3RpdHV0aW9uLWNhdGFsb2dcIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlbGVjdGVkTW9kZSA9PT0gbW9kZS5DQVRBTE9HXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X190b29sYm94XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0TW9kZShtb2RlLkNSRUFUSU9OKVwiXG4gICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICBkYXRhLXRvb2x0aXAtcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAncmVzdGl0dXRpb24nLCBhY3Rpb246ICdjcmVhdGUnIH1cIlxuICAgICAgPlxuICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImFkZFwiPjwvcHJ5LWljb24+XG4gICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmNyZWF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLWNhdGFsb2dfX3NlYXJjaCBvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveF9fc2VhcmNoXCI+XG4gICAgICAgICAgPGxhYmVsIGlkPVwiY2F0YWxvZy1zZWFyY2gtbGFiZWxcIiBmb3I9XCJjYXRhbG9nLXNlYXJjaFwiIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdAcHJ5LnRvb2xib3guY2F0YWxvZy5maWx0ZXIubmFtZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImNhdGFsb2ctc2VhcmNoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQHByeS5yZXN0aXR1dGlvbi5zZWFyY2gnIHwgaTE4blwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2gkIHwgYXN5bmNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGhpcy5zZWFyY2gkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwic2VhcmNoXCIgW3dpZHRoXT1cIjE3XCIgW2hlaWdodF09XCIxN1wiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50XCI+XG4gICAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgJ0BwcnkucmVzdGl0dXRpb24uY2F0YWxvZycgfCBpMThuIH19PC9oMT5cblxuICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uLXdyYXBwZXJcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiby1wcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8bGkgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbVwiICpuZ0Zvcj1cImxldCByZXN0aXR1dGlvbiBvZiBmaWx0ZXJlZFJlc3RpdHV0aW9uJCB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlc3RpdHV0aW9uLmdyb3Vwcz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgICBpY29uU3ZnPVwicHJpdmF0ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlzLXByaXZhdGUgYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLmxvY2snIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE3XCJcbiAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxN1wiXG4gICAgICAgICAgICAgICAgPjwvcHJ5LWljb24+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLmNvbnN1bHRSZXN0aXR1dGlvbicgfCBpMThuXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiXCIgY2xhc3M9XCJpcy1mdWxsLXdpZHRoXCIgW3NyY109XCJyZXN0aXR1dGlvbi5pbWFnZSB8IGdldFNlY3VyZWRJbWFnZTogWzYwMCwgNjAwXSB8IGFzeW5jXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN0aXR1dGlvbi5vd25lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tbW9yZSBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInbW9yZS1hY3Rpb25zLScgKyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5tb3JlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKHJlc3RpdHV0aW9uLCBidXR0b24pXCJcbiAgICAgICAgICAgICAgICAgICAgI2J1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gW2hlaWdodF09XCIyNVwiIFt3aWR0aF09XCIyNVwiIGljb25Tdmc9XCJtb3JlX2hvcml6XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX190eHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVzdGl0dXRpb24ocmVzdGl0dXRpb24pXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLmNvbnN1bHRSZXN0aXR1dGlvbicgfCBpMThuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX190aXRsZS1jb250YWluZXJcIiBlbGxpcHNpcyB0ZXh0RWxlbWVudFNlbGVjdG9yPVwiLmEtaDNcIj5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJhLWgzXCI+e3sgcmVzdGl0dXRpb24ubmFtZSB9fTwvaDM+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2Rlc2NyaXB0aW9uLWNvbnRhaW5lclwiIGVsbGlwc2lzIHRleHRFbGVtZW50U2VsZWN0b3I9XCIuYS1wXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19kZXNjcmlwdGlvbiBhLXBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IHJlc3RpdHV0aW9uLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImEtcCAtZGF0ZVwiPnt7IHJlc3RpdHV0aW9uLm1vZGlmaWNhdGlvbkRhdGUgfCBzaW5jZURhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19mb290ZXIgYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UmVzdGl0dXRpb24ocmVzdGl0dXRpb24pXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10b29sdGlwXT1cIidAcHJ5LnJlc3RpdHV0aW9uLmNvbnN1bHRSZXN0aXR1dGlvbicgfCBpMThuXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24udmlldycgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgPHByeS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBpY29uU3ZnPVwiYXJyb3dfcmlnaHRcIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNtb2RhbEFjdGlvbnM+XG4gICAgPGRpdiBjbGFzcz1cIm0tY29udGV4dC1tZW51XCI+XG4gICAgICA8dWxcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJlc3RpdHV0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdFwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZyByZXN0aXR1dGlvbiBvcHRpb25zXCJcbiAgICAgID5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRSZXN0aXR1dGlvbihzZWxlY3RlZFJlc3RpdHV0aW9uKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkUmVzdGl0dXRpb24ub3duZXJcIlxuICAgICAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ3Jlc3RpdHV0aW9uJywgYWN0aW9uOiAnZWRpdCcgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24udXBkYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgICAgPGxpIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RfX2l0ZW1cIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIC1saW5rLWxpa2VcIlxuICAgICAgICAgICAgI29wZW5Nb2RhbFxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlc3RpdHV0aW9uKHNlbGVjdGVkUmVzdGl0dXRpb24uaWQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRSZXN0aXR1dGlvbi5vd25lclwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAncmVzdGl0dXRpb24nLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ09OU1VMVFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uYmFja1RvQ2F0YWxvZycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgICAgW3NlbGVjdGVkUmVzdGl0dXRpb25dPVwic2VsZWN0ZWRSZXN0aXR1dGlvblwiXG4gICAgICAgIFtlZGl0XT1cImZhbHNlXCJcbiAgICAgICAgKHJlc3RpdHV0aW9uQ3JlYXRlZCk9XCJjbG9zZVJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICBjbGFzcz1cInJlc3RpdHV0aW9uXCJcbiAgICAgID48L3ByeS1yZXN0aXR1dGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlbGVjdGVkTW9kZSA9PT0gbW9kZS5DUkVBVElPTlwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uYmFja1RvQ2F0YWxvZycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgICAgW2VkaXRdPVwiZmFsc2VcIlxuICAgICAgICAocmVzdGl0dXRpb25DcmVhdGVkKT1cImNsb3NlUmVzdGl0dXRpb24oJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwicmVzdGl0dXRpb25cIlxuICAgICAgPjwvcHJ5LXJlc3RpdHV0aW9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2VsZWN0ZWRNb2RlID09PSBtb2RlLkVESVRJT05cIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZWxlY3RNb2RlKG1vZGUuQ0FUQUxPRylcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmJhY2tUb0NhdGFsb2cnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50XCI+XG4gICAgICA8cHJ5LXJlc3RpdHV0aW9uXG4gICAgICAgIChyZXN0aXR1dGlvbkNyZWF0ZWQpPVwiY2xvc2VSZXN0aXR1dGlvbigkZXZlbnQpXCJcbiAgICAgICAgW3NlbGVjdGVkUmVzdGl0dXRpb25dPVwic2VsZWN0ZWRSZXN0aXR1dGlvblwiXG4gICAgICAgIGNsYXNzPVwicmVzdGl0dXRpb25cIlxuICAgICAgPjwvcHJ5LXJlc3RpdHV0aW9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWNhdGFsb2cvcmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9yZXN0aXR1dGlvbi9jb21wb25lbnRzL3Jlc3RpdHV0aW9uLWNhdGFsb2cvcmVzdGl0dXRpb24tY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFpQixRQUFRLEVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7O0FBTXJELE1BQU0sT0FBTyw4QkFBOEI7SUFZekMsWUFDVSxLQUFZLEVBQ1YsT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ0UsTUFBcUI7UUFIM0QsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNFLFdBQU0sR0FBTixNQUFNLENBQWU7UUFkckUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUs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LEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQzs4R0E3RlUsOEJBQThCLDhGQWdCbkIsZ0JBQWdCO2tHQWhCM0IsOEJBQThCLDJKQVNOLFdBQVcsNkJDcEJoRCxzek9BcUxBOzsyRkQxS2EsOEJBQThCO2tCQUoxQyxTQUFTOytCQUNFLHlCQUF5Qjs7MEJBbUJoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5Q0FQWSxlQUFlO3NCQUFoRSxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IENvbmZpZ0FjdGlvbnMsIENvbmZpZ1NlbGVjdG9ycywgUFJZX0FDQ0VTU19UT0tFTiwgUHJ5QmFzZUFjY2VzcywgVmlld01vZGUsIFdpZGdldCB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1yZXN0aXR1dGlvbi1jYXRhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3RpdHV0aW9uLWNhdGFsb2cuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeVJlc3RpdHV0aW9uQ2F0YWxvZ0NvbXBvbmVudCB7XG4gIHJlc3RpdHV0aW9ucyQ6IE9ic2VydmFibGU8V2lkZ2V0W10+O1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIGZpbHRlcmVkUmVzdGl0dXRpb24kOiBPYnNlcnZhYmxlPFdpZGdldFtdPjtcbiAgbW9kZSA9IFZpZXdNb2RlO1xuICBzZWxlY3RlZE1vZGU6IFZpZXdNb2RlID0gVmlld01vZGUuQ0FUQUxPRztcbiAgc2VsZWN0ZWRSZXN0aXR1dGlvbjogV2lkZ2V0IHwgbnVsbCA9IG51bGw7XG4gIHJlc3RpdHV0aW9uPzogV2lkZ2V0O1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgnbW9kYWxBY3Rpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZUFjdGlvbnMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjYW5Nb2RpZnkkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByb3RlY3RlZCBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByb3RlY3RlZCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUFJZX0FDQ0VTU19UT0tFTikgcHJpdmF0ZSBhY2Nlc3M6IFByeUJhc2VBY2Nlc3NcbiAgKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmxvYWRXaWRnZXRzKCkpO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5nZXRNYXBTdHlsZXMoKSk7XG5cbiAgICB0aGlzLnJlc3RpdHV0aW9ucyQgPSB0aGlzLnN0b3JlXG4gICAgICAuc2VsZWN0KENvbmZpZ1NlbGVjdG9ycy5jYXRhbG9nKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdGl0dXRpb25MaXN0KSA9PlxuICAgICAgICAgIFsuLi5yZXN0aXR1dGlvbkxpc3RdLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICBhLm1vZGlmaWNhdGlvbkRhdGUgPyBiLm1vZGlmaWNhdGlvbkRhdGUubG9jYWxlQ29tcGFyZShhLm1vZGlmaWNhdGlvbkRhdGUpIDogMVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB0aGlzLmZpbHRlcmVkUmVzdGl0dXRpb24kID0gY29tYmluZUxhdGVzdChbdGhpcy5yZXN0aXR1dGlvbnMkLCB0aGlzLnNlYXJjaCRdKS5waXBlKFxuICAgICAgbWFwKChbcmVzdGl0dXRpb25zLCBzZWFyY2hdKSA9PlxuICAgICAgICByZXN0aXR1dGlvbnMuZmlsdGVyKFxuICAgICAgICAgIChyZXN0aXR1dGlvbikgPT4gc2VhcmNoLmxlbmd0aCA9PT0gMCB8fCByZXN0aXR1dGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5jYW5Nb2RpZnkkID1cbiAgICAgIHRoaXMuYWNjZXNzICYmIHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbiA/IHRoaXMuYWNjZXNzLmNhbk1vZGlmeVdpZGdldCh0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24pIDogb2YoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0TW9kZShuZXdNb2RlOiBWaWV3TW9kZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRNb2RlID0gbmV3TW9kZTtcbiAgfVxuXG4gIHNlbGVjdFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uOiBXaWRnZXQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24gPSByZXN0aXR1dGlvbjtcbiAgICB0aGlzLnNlbGVjdE1vZGUodGhpcy5tb2RlLkNPTlNVTFQpO1xuICAgIHRoaXMuc2VhcmNoJC5uZXh0KCcnKTtcbiAgfVxuXG4gIGNsb3NlUmVzdGl0dXRpb24oJGV2ZW50OiB2b2lkKSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3RpdHV0aW9uID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdE1vZGUodGhpcy5tb2RlLkNBVEFMT0cpO1xuICB9XG5cbiAgZGVsZXRlUmVzdGl0dXRpb24oaWQ6IHN0cmluZykge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jb25maXJtUmVzdGl0dXRpb25EZWxldGlvbih7IGlkIH0pKTtcbiAgICB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucygpO1xuICB9XG5cbiAgZWRpdFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uOiBXaWRnZXQpIHtcbiAgICB0aGlzLnNlbGVjdGVkUmVzdGl0dXRpb24gPSByZXN0aXR1dGlvbjtcbiAgICB0aGlzLnNlbGVjdE1vZGUoVmlld01vZGUuRURJVElPTik7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQoJycpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsQWN0aW9ucyhyZXN0aXR1dGlvbj86IFdpZGdldCwgbW9yZUJ1dHRvbj86IEhUTUxCdXR0b25FbGVtZW50KSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYgJiYgcmVzdGl0dXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbiA9IHJlc3RpdHV0aW9uO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnbS1jb250ZXh0LW1lbnUtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnRvZ2dsZU1vZGFsQWN0aW9ucyhyZXN0aXR1dGlvbikpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZUFjdGlvbnMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgY29uc3QgY29udGV4dE1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYubS1jb250ZXh0LW1lbnUnKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgIGlmICghIWNvbnRleHRNZW51ICYmIG1vcmVCdXR0b24pIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IG1vcmVCdXR0b24/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS5sZWZ0ID0gKHJlY3Q/LmxlZnQgPz8gMCkgLSAoY29udGV4dE1lbnU/LmNsaWVudFdpZHRoID8/IDApICsgMjMgKyAncHgnO1xuICAgICAgICBjb250ZXh0TWVudS5zdHlsZS50b3AgPSAocmVjdD8udG9wID8/IDApICsgMzAgKyAncHgnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXN0aXR1dGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCI8cHJ5LXJlc3RpdHV0aW9uLWNzcz48L3ByeS1yZXN0aXR1dGlvbi1jc3M+XG48ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXQgby1yZXN0aXR1dGlvbi1jYXRhbG9nXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ0FUQUxPR1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DUkVBVElPTilcIlxuICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgKnByeUFjY2Vzcz1cInsgbW9kdWxlOiAnZGFzaGJvYXJkJywgcGFnZTogJ3Jlc3RpdHV0aW9uJywgYWN0aW9uOiAnY3JlYXRlJyB9XCJcbiAgICAgID5cbiAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJhZGRcIj48L3ByeS1pY29uPlxuICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5jcmVhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1jYXRhbG9nX19zZWFyY2ggby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hfX3NlYXJjaFwiPlxuICAgICAgICAgIDxsYWJlbCBpZD1cImNhdGFsb2ctc2VhcmNoLWxhYmVsXCIgZm9yPVwiY2F0YWxvZy1zZWFyY2hcIiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQHByeS50b29sYm94LmNhdGFsb2cuZmlsdGVyLm5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJjYXRhbG9nLXNlYXJjaFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0BwcnkucmVzdGl0dXRpb24uc2VhcmNoJyB8IGkxOG5cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRoaXMuc2VhcmNoJC5uZXh0KCRldmVudClcIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cInNlYXJjaFwiIFt3aWR0aF09XCIxN1wiIFtoZWlnaHRdPVwiMTdcIj48L3ByeS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fY29udGVudFwiPlxuICAgICAgPGgxIGNsYXNzPVwiYS1oMVwiPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmNhdGFsb2cnIHwgaTE4biB9fTwvaDE+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbi13cmFwcGVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cIm8tcHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgPGxpIGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1cIiAqbmdGb3I9XCJsZXQgcmVzdGl0dXRpb24gb2YgZmlsdGVyZWRSZXN0aXR1dGlvbiQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9faGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXN0aXR1dGlvbi5ncm91cHM/Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgIDxwcnktaWNvblxuICAgICAgICAgICAgICAgICAgaWNvblN2Zz1cInByaXZhdGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpcy1wcml2YXRlIGEtdG9vbHRpcCAtdG9vbHRpcC1uby13cmFwXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5sb2NrJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCIxN1wiXG4gICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTdcIlxuICAgICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYS10b29sdGlwIC10b29sdGlwLW5vLXdyYXBcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSZXN0aXR1dGlvbihyZXN0aXR1dGlvbilcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5jb25zdWx0UmVzdGl0dXRpb24nIHwgaTE4blwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1wcmVzZW50YXRpb25fX2l0ZW1fX2ltYWdlXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIGFsdD1cIlwiIGNsYXNzPVwiaXMtZnVsbC13aWR0aFwiIFtzcmNdPVwicmVzdGl0dXRpb24uaW1hZ2UgfCBnZXRTZWN1cmVkSW1hZ2U6IFs2MDAsIDYwMF0gfCBhc3luY1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKGNhbk1vZGlmeSQgfCBhc3luYykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb3JlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tbW9yZSBhLXRvb2x0aXAgLXRvb2x0aXAtbm8td3JhcFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCInbW9yZS1hY3Rpb25zLScgKyBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5tb3JlJyB8IGkxOG5cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTW9kYWxBY3Rpb25zKHJlc3RpdHV0aW9uLCBidXR0b24pXCJcbiAgICAgICAgICAgICAgICAgICAgI2J1dHRvblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cHJ5LWljb24gW2hlaWdodF09XCIyNVwiIFt3aWR0aF09XCIyNVwiIGljb25Tdmc9XCJtb3JlX2hvcml6XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fdHh0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uKVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5jb25zdWx0UmVzdGl0dXRpb24nIHwgaTE4blwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fdGl0bGUtY29udGFpbmVyXCIgZWxsaXBzaXMgdGV4dEVsZW1lbnRTZWxlY3Rvcj1cIi5hLWgzXCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiYS1oM1wiPnt7IHJlc3RpdHV0aW9uLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tcHJlc2VudGF0aW9uX19pdGVtX19kZXNjcmlwdGlvbi1jb250YWluZXJcIiBlbGxpcHNpcyB0ZXh0RWxlbWVudFNlbGVjdG9yPVwiLmEtcFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZGVzY3JpcHRpb24gYS1wXCI+XG4gICAgICAgICAgICAgICAgICB7eyByZXN0aXR1dGlvbi5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXAgLWRhdGVcIj57eyByZXN0aXR1dGlvbi5tb2RpZmljYXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJvLXByZXNlbnRhdGlvbl9faXRlbV9fZm9vdGVyIGEtdG9vbHRpcCAtdG9vbHRpcC1uby13cmFwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJlc3RpdHV0aW9uKHJlc3RpdHV0aW9uKVwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCInQHByeS5yZXN0aXR1dGlvbi5jb25zdWx0UmVzdGl0dXRpb24nIHwgaTE4blwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0blwiPlxuICAgICAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLnZpZXcnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgIDxwcnktaWNvbiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cImFycm93X3JpZ2h0XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbW9kYWxBY3Rpb25zPlxuICAgIDxkaXYgY2xhc3M9XCJtLWNvbnRleHQtbWVudVwiPlxuICAgICAgPHVsXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRSZXN0aXR1dGlvblwiXG4gICAgICAgIGNsYXNzPVwibS1jb250ZXh0LW1lbnVfX2xpc3RcIlxuICAgICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2cgcmVzdGl0dXRpb24gb3B0aW9uc1wiXG4gICAgICA+XG4gICAgICAgIDxsaSBjbGFzcz1cIm0tY29udGV4dC1tZW51X19saXN0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJhLWJ0biAtbGluay1saWtlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0UmVzdGl0dXRpb24oc2VsZWN0ZWRSZXN0aXR1dGlvbilcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTW9kaWZ5JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAncmVzdGl0dXRpb24nLCBhY3Rpb246ICdlZGl0JyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi51cGRhdGUnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgY2xhc3M9XCJtLWNvbnRleHQtbWVudV9fbGlzdF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gLWxpbmstbGlrZVwiXG4gICAgICAgICAgICAjb3Blbk1vZGFsXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUmVzdGl0dXRpb24oc2VsZWN0ZWRSZXN0aXR1dGlvbi5pZClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEoY2FuTW9kaWZ5JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICAqcHJ5QWNjZXNzPVwieyBtb2R1bGU6ICdkYXNoYm9hcmQnLCBwYWdlOiAncmVzdGl0dXRpb24nLCBhY3Rpb246ICdkZWxldGUnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmRlbGV0ZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWxlY3RlZE1vZGUgPT09IG1vZGUuQ09OU1VMVFwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uYmFja1RvQ2F0YWxvZycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgICAgW3NlbGVjdGVkUmVzdGl0dXRpb25dPVwic2VsZWN0ZWRSZXN0aXR1dGlvblwiXG4gICAgICAgIFtlZGl0XT1cImZhbHNlXCJcbiAgICAgICAgKHJlc3RpdHV0aW9uQ3JlYXRlZCk9XCJjbG9zZVJlc3RpdHV0aW9uKCRldmVudClcIlxuICAgICAgICBjbGFzcz1cInJlc3RpdHV0aW9uXCJcbiAgICAgID48L3ByeS1yZXN0aXR1dGlvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlbGVjdGVkTW9kZSA9PT0gbW9kZS5DUkVBVElPTlwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1hbmlmZXN0LWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNlbGVjdE1vZGUobW9kZS5DQVRBTE9HKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIj5cbiAgICAgICAge3sgJ0BwcnkucmVzdGl0dXRpb24uYmFja1RvQ2F0YWxvZycgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgIDxwcnktcmVzdGl0dXRpb25cbiAgICAgICAgW2VkaXRdPVwiZmFsc2VcIlxuICAgICAgICAocmVzdGl0dXRpb25DcmVhdGVkKT1cImNsb3NlUmVzdGl0dXRpb24oJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwicmVzdGl0dXRpb25cIlxuICAgICAgPjwvcHJ5LXJlc3RpdHV0aW9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2VsZWN0ZWRNb2RlID09PSBtb2RlLkVESVRJT05cIj5cbiAgICA8ZGl2IGNsYXNzPVwiby1tYW5pZmVzdC1sYXlvdXRfX3Rvb2xib3hcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZWxlY3RNb2RlKG1vZGUuQ0FUQUxPRylcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCI+XG4gICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmJhY2tUb0NhdGFsb2cnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tbWFuaWZlc3QtbGF5b3V0X19jb250ZW50XCI+XG4gICAgICA8cHJ5LXJlc3RpdHV0aW9uXG4gICAgICAgIChyZXN0aXR1dGlvbkNyZWF0ZWQpPVwiY2xvc2VSZXN0aXR1dGlvbigkZXZlbnQpXCJcbiAgICAgICAgW3NlbGVjdGVkUmVzdGl0dXRpb25dPVwic2VsZWN0ZWRSZXN0aXR1dGlvblwiXG4gICAgICAgIGNsYXNzPVwicmVzdGl0dXRpb25cIlxuICAgICAgPjwvcHJ5LXJlc3RpdHV0aW9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=