pacem 0.60.0 → 0.60.1-mohr

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +1 -1
  12. package/dist/js/pacem-2d.js +1 -1
  13. package/dist/js/pacem-2d.min.js +1 -1
  14. package/dist/js/pacem-3d.d.ts +1 -1
  15. package/dist/js/pacem-3d.js +1 -1
  16. package/dist/js/pacem-3d.min.js +1 -1
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +1 -1
  19. package/dist/js/pacem-charts.min.js +1 -1
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +1 -1
  22. package/dist/js/pacem-cms.min.js +1 -1
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +3 -2
  28. package/dist/js/pacem-foundation.min.js +2 -2
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +1 -1
  40. package/dist/js/pacem-media.min.js +1 -1
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +1 -1
  43. package/dist/js/pacem-networking.min.js +1 -1
  44. package/dist/js/pacem-numerical.d.ts +38 -7
  45. package/dist/js/pacem-numerical.js +388 -38
  46. package/dist/js/pacem-numerical.min.js +2 -2
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +1 -1
  49. package/dist/js/pacem-plus.min.js +1 -1
  50. package/dist/js/pacem-scaffolding.d.ts +1 -1
  51. package/dist/js/pacem-scaffolding.js +1 -1
  52. package/dist/js/pacem-scaffolding.min.js +1 -1
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +1 -1
  55. package/dist/js/pacem-ui.min.js +1 -1
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -942,7 +942,8 @@ var Pacem;
942
942
  Pacem.NullChecker = NullChecker;
943
943
  })(Pacem || (Pacem = {}));
944
944
  Number.prototype.isCloseTo = function (other, precision = 14) {
945
- return this.toFixed(precision) === other.toFixed(precision);
945
+ const delta = Number(`1e-${precision}`);
946
+ return this > (other - delta) && this < (other + delta);
946
947
  };
947
948
  Number.prototype.roundoff = function (precision = 14) {
948
949
  return parseFloat(this.toFixed(precision));
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- "use strict";var Pacem;!function(e){e.Arrays=class Arrays{static range(t,r,n=2){let a=t;e.NullChecker.isNull(r)&&(r=n=t,t=1);const s=(r-t)/(n-1),i=[];if(s>0)for(;i.length<n;)i.push(a.roundoff()),a+=s;return i}static chunkify(t,r){if(e.NullChecker.isNullOrEmpty(t))return[];if(r<=0||r%1!=0)throw new Error("Provide a positive integer number.");const n=Math.ceil(t.length/r);return Array.from({length:n},(e,n)=>{const a=n*r,s=a+r;return t.slice(a,s)})}}}(Pacem||(Pacem={})),function(e){class Blobs{static blobToDataURL(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=e=>{t(e.target.result)},n.readAsDataURL(e)})}static _b64ToUint8Array(e){let t=e.length;const r=new Uint8Array(t);for(;t--;)r[t]=e.charCodeAt(t);return r}static base64ToBlob(e,t){const r=Blobs._b64ToUint8Array(atob(e));return new Blob([r],t)}static dataURLToBlob(e){const t=e.indexOf(",");if(-1===t)return Blobs.base64ToBlob(e);{const r=e.substring(t+1),n=e.substring(0,t).match(/:(.*?);/)[1];return Blobs.base64ToBlob(r,{type:n})}}static blobToText(e,t){return new Promise((r,n)=>{e.arrayBuffer().then(e=>{const n=new TextDecoder(t).decode(e);r(n)})})}static textToBlob(e,t="text/plain"){const r=(new TextEncoder).encode(e);return new Blob([r],{type:t})}}e.Blobs=Blobs}(Pacem||(Pacem={})),function(e){!function(e){const t=(e,t)=>{const r=e.match(t);return r?r[2]:null};e.detect=function(e=navigator.userAgent){let r="unknown",n=null;switch(/ucbrowser/i.test(e)?r="UCBrowser":/edg/i.test(e)?r="Edge":/googlebot/i.test(e)?r="GoogleBot":/chromium/i.test(e)?r="Chromium":/firefox|fxios/i.test(e)&&!/seamonkey/i.test(e)?r="Firefox":/; msie|trident/i.test(e)&&!/ucbrowser/i.test(e)?r="IE":/chrome|crios/i.test(e)&&!/opr|opera|chromium|edg|ucbrowser|googlebot/i.test(e)?r="Chrome":/safari/i.test(e)&&!/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i.test(e)?r="Safari":/opr|opera/i.test(e)&&(r="Opera"),r){case"UCBrowser":n=t(e,/(ucbrowser)\/([\d\.]+)/i);break;case"Edge":n=t(e,/(edge|edga|edgios|edg)\/([\d\.]+)/i);break;case"GoogleBot":n=t(e,/(googlebot)\/([\d\.]+)/i);break;case"Chromium":n=t(e,/(chromium)\/([\d\.]+)/i);break;case"Firefox":n=t(e,/(firefox|fxios)\/([\d\.]+)/i);break;case"Chrome":n=t(e,/(chrome|crios)\/([\d\.]+)/i);break;case"Safari":n=t(e,/(safari)\/([\d\.]+)/i);break;case"Opera":n=t(e,/(opera|opr)\/([\d\.]+)/i);break;case"IE":{const r=t(e,/(trident)\/([\d\.]+)/i);n=r?`${parseFloat(r)+4}`:"7.0";break}default:n="0.0.0.0"}return{name:r,version:n}}}(e.Browsers||(e.Browsers={}))}(Pacem||(Pacem={})),function(e){const t=/^hsl\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*\)$/,r=/^hsla\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)\)$/,n=/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,a=/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\)$/,s=/^#[a-f0-9]{6}$/,i=/^#[a-f0-9]{3}$/;function o(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"r"in t&&"g"in t&&"b"in t&&"number"==typeof t.r&&"number"==typeof t.b&&"number"==typeof t.g&&(t.a??=1,t.r>=0&&t.r<=1&&t.g>=0&&t.g<=1&&t.b>=0&&t.b<=1&&t.a>=0&&t.a<=1)}function c(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"h"in t&&"s"in t&&"l"in t&&"number"==typeof t.h&&"number"==typeof t.s&&"number"==typeof t.l&&(t.a??=1,t.h>=0&&t.h<=360&&t.s>=0&&t.s<=1&&t.l>=0&&t.l<=1&&t.a>=0&&t.a<=1)}const l={adjustRgbChannel:e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4),adjustRgbChannelInv:e=>e<=.00304?12.92*e:1.055*(Math.pow(e,1/2.4)-.055),adjustRgb:e=>({r:l.adjustRgbChannel(e.r),g:l.adjustRgbChannel(e.g),b:l.adjustRgbChannel(e.b),a:e.a}),adjustRgbInv:e=>({r:l.adjustRgbChannelInv(e.r),g:l.adjustRgbChannelInv(e.g),b:l.adjustRgbChannelInv(e.b),a:e.a}),X:e=>.4125*e.r+.3576*e.g+.1804*e.b,Y:e=>.2126*e.r+.7152*e.g+.0722*e.b,Z:e=>.0193*e.r+.1191*e.g+.9503*e.b,relativeLuminance:e=>{const t=l.adjustRgb(e);return l.Y(t)},rgbToCieXYZ:e=>{const t=l.adjustRgb(e);return{x:l.X(t),y:l.Y(t),z:l.Z(t),a:e.a}},cieXYZToRgb:e=>{const t=3.241*e.x-1.5374*e.y-.4986*e.z,r=-.9692*e.x+1.876*e.y+.0416*e.z,n=.0556*e.x-.204*e.y+1.057*e.z;return l.adjustRgbInv({r:t,g:r,b:n,a:e.a})},contrastRatio:(e,t)=>{const r=l.relativeLuminance(e)+.05,n=l.relativeLuminance(t)+.05;return r>n?r/n:n/r}};function u(t){return e.Strings.leftPad(t.toString(16),2,"0")}class Colors{static WCAG_MINIMUM_CONTRAST=3;static WCAG_NORMAL_TEXT_CONTRAST=4.5;static WCAG_SAFE_CONTRAST=7;static _clampRGB(e){const t=e=>Math.min(1,Math.max(0,e));return null==e[3]&&(e[3]=1),{r:t(e[0]),g:t(e[1]),b:t(e[2]),a:Math.min(1,Math.max(0,e[3]))}}static _normalize(e){return[e[0]/255,e[1]/255,e[2]/255,e[3]]}static parse(e){if(e=(e||"").toLowerCase(),n.test(e)){let t=n.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),1]))}if(a.test(e)){let t=a.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),parseFloat(t[4])]))}if(s.test(e)){let t=s.exec(e)[0];return this._clampRGB(this._normalize([parseInt("0x"+t.substr(1,2)),parseInt("0x"+t.substr(3,2)),parseInt("0x"+t.substr(5,2)),1]))}if(i.test(e)){let t=i.exec(e)[0],r=t.substr(1,1),n=t.substr(2,1),a=t.substr(3,1);return this._clampRGB(this._normalize([parseInt("0x"+r+r),parseInt("0x"+n+n),parseInt("0x"+a+a),1]))}if(t.test(e)){let r=t.exec(e);const n={h:parseFloat(r[1]),s:.01*parseFloat(r[2]),l:.01*parseFloat(r[3])};return this.rgb(n)}if(r.test(e)){let t=r.exec(e);const n={h:parseFloat(t[1]),s:.01*parseFloat(t[2]),l:.01*parseFloat(t[3]),a:parseFloat(t[4])};return this.rgb(n)}}static hsl(e){const t=function(e){const t=e.r,r=e.g,n=e.b;return(.5*(Math.max(t,r,n)+Math.min(t,r,n))).clamp(0,1)}(e),r=function(e,t){const r=e.r,n=e.g,a=e.b,s=Math.max(r,n,a),i=Math.min(r,n,a);return(0===t||1===t?0:(s-i)/(1-Math.abs(2*t-1))).clamp(0,1)}(e,t),n=function(e){const t=e.r,r=e.g,n=e.b,a=Math.max(t,r,n),s=Math.min(t,r,n);let i=0;return a!==s&&(i=a===t?((r-n)/(a-s)*60+360)%360:a===r?((n-t)/(a-s)*60+120)%360:((t-r)/(a-s)*60+240)%360),i.clamp(0,360)}(e);return{h:n,s:r,l:t,a:e.a}}static cieXYZ(e){return c(e)&&(e=this.rgb(e)),l.rgbToCieXYZ(e)}static rgb(e){if(!c(e)){const t=l.cieXYZToRgb(e);return this._clampRGB([t.r,t.g,t.b,t.a])}{const t=e.h,r=e.s,n=e.l,a=t/60,s=(1-Math.abs(2*n-1))*r,i=s*(1-Math.abs(a%2-1)),o=n-s/2,c=(t,r,n)=>this._clampRGB([t+o,r+o,n+o,e.a]);if(a<=1)return c(s,i,0);if(a<=2)return c(i,s,0);if(a<=3)return c(0,s,i);if(a<=4)return c(0,i,s);if(a<=5)return c(i,0,s);if(a<=6)return c(s,0,i)}}static stringify(e,t=1){if(c(e)){t??=1,e.a??=1;const r="number"==typeof t?t:1;return`hsla(${e.h.roundoff(r)},${(100*e.s).roundoff(r)}%,${(100*e.l).roundoff(r)}%,${e.a.roundoff()})`}if(o(e)){t??=!0,e.a??=1;const r="boolean"==typeof t?t:!!t,n=Math.round(255*e.r),a=Math.round(255*e.g),s=Math.round(255*e.b),i=e.a.roundoff();return 1===i?r?("#"+u(n)+u(a)+u(s)).toUpperCase():`rgb(${n},${a},${s})`:`rgba(${n},${a},${s},${i})`}}static contrastRatio(e,t){return c(e)&&(e=this.rgb(e)),c(t)&&(t=this.rgb(t)),l.contrastRatio(e,t)}static luminance(e){return c(e)&&(e=Colors.rgb(e)),l.relativeLuminance(e)}static lighten(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.l+t));return Object.assign({},e,{l:r})}if(o(e)){const r=this.lighten(this.hsl(e),t);return this.rgb(r)}return e}static darken(e,t=.1){return this.lighten(e,-t)}static saturate(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.s+t));return Object.assign({},e,{s:r})}if(o(e)){const r=this.saturate(this.hsl(e),t);return this.rgb(r)}return e}static desaturate(e,t=.1){return this.saturate(e,-t)}static interpolate(e,t,r,n){r??=.5,n??=r;const a=(r+n).roundoff(),s=(r/a).roundoff(),i=(n/a).roundoff(),l=o(e),u=c(e),h=e=>o(e)||c(e)?Colors.cieXYZ(e):e;e=h(e),t=h(t);const d={x:(e.x*s+t.x*i).roundoff(),y:(e.y*s+t.y*i).roundoff(),z:(e.z*s+t.z*i).roundoff(),a:(e.a*s+t.a*i).roundoff()};return l?Colors.rgb(d):u?Colors.hsl(Colors.rgb(d)):d}}e.Colors=Colors}(Pacem||(Pacem={})),function(e){const t=/^\/Date\([\d]+\)\/$/i;class Dates{static parse(e){let r;return"string"==typeof e?(r=t.test(e)?parseInt(e.substring(6)):Date.parse(e),new Date(r)):"number"==typeof e?new Date(e):e}static isLeapYear(e){return e%4==0&&e%100!=0||e%400==0}static daysInMonth(e,t){return[31,Dates.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]}static isDate(e){return e instanceof Date&&!isNaN(e.valueOf())}static dateOnly(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}static addMonths(e,t){let r=e.getDate(),n=new Date(e),a=n.getMonth()+t,s=0;for(;a<0;)a+=12,s--;return n.setDate(1),n.setMonth(a%12),n.setFullYear(n.getFullYear()+s+Math.floor(a/12)),n.setDate(Math.min(r,Dates.daysInMonth(n.getFullYear(),n.getMonth()))),n}static addDays(e,t){return new Date(e.valueOf()+864e5*t)}static daysBetween(e,t){return(t.valueOf()-e.valueOf())/864e5}}e.Dates=Dates}(Pacem||(Pacem={})),function(e){const t=/[-+]?([\d]+(\.[\d]+(e-[\d]+)?)?|[\d]*(\.[\d]+(e-[\d]+)?))/g;function r(e){const r=[];let n=e.match(t);return n&&n.length>0&&n.forEach(e=>r.push(parseFloat(e))),r}e.parseAsNumericalArray=r;class Angle{static isAngle(e){return"object"==typeof e&&"vertex"in e&&Point.isPoint(e.vertex)&&"start"in e&&Point.isPoint(e.start)&&"end"in e&&Point.isPoint(e.end)}static value(t){if(e.NullChecker.isNullOrEmpty(t)||!Angle.isAngle(t))return Number.NaN;const{vertex:r,start:n,end:a}=t;return Angle.angleBetween(r,n,a)}static angleBetween(e,t,r){const n=t.x-e.x,a=t.y-e.y,s=r.x-e.x,i=r.y-e.y,o=n*s+a*i,c=n*i-a*s;return-Math.atan2(c,o)}}e.Angle=Angle;class Size{static parse(e){let t=r(e);if(t&&2===t.length)return{width:t[0],height:t[1]};throw new Error(`Cannot parse "${e}" as a valid Size.`)}static isSize(e){return"object"==typeof e&&"width"in e&&"number"==typeof e.width&&"height"in e&&"number"==typeof e.height}}e.Size=Size;class Point{static parse(e){let t=r(e);if(t&&2===t.length)return{x:t[0],y:t[1]};throw new Error(`Cannot parse "${e}" as a valid Point.`)}static isPoint(e){return"object"==typeof e&&"x"in e&&"number"==typeof e.x&&"y"in e&&"number"==typeof e.y}static distance(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static subtract(e,t){return{x:t.x-e.x,y:t.y-e.y}}static add(...e){var t={x:0,y:0};for(var r of e)t.x+=r.x,t.y+=r.y;return t}static multiply(e,t){return{x:e.x*t,y:e.y*t}}}e.Point=Point;class Rect{static parse(e){let t=r(e);if(t&&4===t.length)return{x:t[0],y:t[1],width:t[2],height:t[3]};throw new Error(`Cannot parse "${e}" as a valid Rect.`)}static isRect(e){return Point.isPoint(e)&&Size.isSize(e)}static _stretch(e,t){return{a:t.width/e.width,b:0,c:0,d:t.height/e.height,e:t.x-e.x,f:t.y-e.y}}static _contain(t,r,n,a){let s=1;s=t.width/t.height>=r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _cover(t,r,n,a){let s=1;s=t.width/t.height<r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _align(e,t,r,n){let a=0,s=0;switch(r){case"left":a=t.x-e.x;break;case"right":a=t.x+t.width-e.width-e.x;break;default:a=t.x+.5*t.width-.5*e.width-e.x}switch(n){case"top":s=t.y-e.y;break;case"bottom":s=t.y+t.height-e.height-e.y;break;default:s=t.y+.5*t.height-.5*e.height-e.y}return{x:a,y:s}}static findTransform(e,t,r="stretch",n="center",a="middle"){switch(r){case"contain":return this._contain(e,t,n,a);case"cover":return this._cover(e,t,n,a);default:return this._stretch(e,t)}}static intersect(...e){const t={x:0,y:0,height:0,width:0},r=Array.from(e||[]);if(r.length<=0)return t;for(var n=r[0],a=1;a<r.length;a++){const e=r[a],s=Math.max(e.x,n.x),i=Math.max(e.y,n.y),o=Math.min(e.x+e.width,n.x+n.width)-s,c=Math.min(e.y+e.height,n.y+n.height)-i;if(o<0||c<=0)return t;n={x:s,y:i,width:o,height:c}}return n}static expand(e,...t){const r=Array.from(t||[]);let n=e.x,a=e.y,s=n,i=a;Rect.isRect(e)&&(s+=e.width,i+=e.height);for(let e of r)n=Math.min(e.x,n),a=Math.min(e.y,a),s=Math.max(e.x,s),i=Math.max(e.y,i);return{x:n,y:a,width:s-n,height:i-a}}}e.Rect=Rect}(Pacem||(Pacem={})),function(e){e.HistoryService=class HistoryService{constructor(e,t){this.#e=e,this.#t=t}#r=[];#n=[];#t;#e;get current(){return this.#e}get canUndo(){return this.#r.length>0}get canRedo(){return this.#n.length>0}set maxlength(e){this.#t=e}undo(){if(this.canUndo){const e=this.#r,t=this.#n,r=this.#e;t.unshift(r),this.#e=e.pop()}}redo(){if(this.canRedo){const e=this.#r,t=this.#n,r=this.#e;e.push(r),this.#e=t.shift()}}push(e){this.#n.splice(0),this.#r.push(this.#e),this.#e=e;const t=this.#t,r=this.#r;t>0&&r.length>t&&r.splice(0,r.length-t)}reset(){this.#n.splice(0),this.#r.splice(0)}}}(Pacem||(Pacem={})),function(e){const t={mode:"stretch",align:"center",valign:"middle",quality:1,type:"image/jpeg"};class Imaging{static async loadImage(e){const t=await fetch(e);if(!t.ok)return null;return await t.blob()}static async resizeImage(r,n,a,s){if(n<=0||a<=0||isNaN(n)||isNaN(a))throw new Error("Invalid target size");"string"==typeof r&&(r=await Imaging.loadImage(r));const i=await self.createImageBitmap(r),o=i.width,c=i.height,l=new OffscreenCanvas(o,c),u=l.getContext("2d");u.imageSmoothingEnabled=u.mozImageSmoothingEnabled=u.oImageSmoothingEnabled=u.webkitImageSmoothingEnabled=!0;const{quality:h,type:d,mode:g,align:f,valign:p,background:m}=Object.assign({},t,s??{}),y={width:o,height:c,x:0,y:0},x={x:0,y:0,width:n,height:a},b=e.Rect.findTransform(y,x,g,f,p);l.width=n,l.height=a,m&&(u.fillStyle=m,u.fillRect(0,0,l.width,l.height)),u.setTransform(b),u.drawImage(i,0,0);return await l.convertToBlob({quality:h,type:d})}}e.Imaging=Imaging}(Pacem||(Pacem={})),function(e){class Keys{static#a;static uniqueId(){let e=Keys.#a||Date.now();return Keys.#a=++e}static uniqueCode(){return Keys.uniqueId().toBase62()}static randomString(e){let t="";do{t+=(62*Math.random()).toBase62()}while(t.length<e);return t}}e.Keys=Keys}(Pacem||(Pacem={})),function(e){class Matrix2D{static isIdentity(e){return 1===e.a&&1===e.d&&0===e.b&&0===e.f&&0===e.c&&0===e.e}static get identity(){return{a:1,b:0,c:0,d:1,e:0,f:0}}static copy(e){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}static scale(e,t,r=t){return{a:e.a*t,b:e.b,c:e.c,d:e.d*r,e:e.e,f:e.f}}static translate(e,t){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y}}static rotate(e,t){const r=Math.cos(t),n=Math.sin(t);return Matrix2D.multiply(e,{a:r,b:n,c:-n,d:r,e:0,f:0})}static multiply(e,t){return"x"in e&&"y"in e?"number"==typeof t?{x:e.x*t,y:e.y*t}:{x:e.x*t.a+e.y*t.c+t.e,y:e.x*t.b+e.y*t.d+t.f}:"number"==typeof t?{a:e.a*t,b:e.b*t,c:e.c*t,d:e.d*t,e:e.e*t,f:e.f*t}:{a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,e:e.e*t.a+e.f*t.c+t.e,f:e.e*t.b+e.f*t.d+t.f}}static det(e){return e.a*e.d-e.c*e.b}static invert(e){const t=this.det(e);if(0===t)return null;const r=1/t;return this.multiply({a:e.d,b:-e.b,c:-e.c,d:e.a,e:-e.e*e.d+e.c*e.f,f:e.e*e.b-e.a*e.f},r)}static toComponents(e,t={x:0,y:0}){const r=Math.sqrt(e.a*e.a+e.c*e.c),n=Math.sqrt(e.b*e.b+e.d*e.d),a=0!=r?e.a/r:0,s=0!=r?e.c/r:0,i=Math.atan2(s,a),{x:o,y:c}=t;return{scaleX:r,scaleY:n,rotation:i,translation:{x:e.e-o*(r*a-1)+c*r*s,y:e.f-c*(n*a-1)-o*n*s}}}}e.Matrix2D=Matrix2D}(Pacem||(Pacem={})),function(e){class NullChecker{static isNull(e){return null==e}static isEmpty(t){try{return Array.isArray(t)&&0===t.length||"string"==typeof t&&""===t||"object"==typeof t&&0===Object.keys(t).length&&!e.Dates.isDate(t)&&!(t instanceof RegExp)&&!(t instanceof FileSystemDirectoryHandle)&&!(t instanceof FileSystemFileHandle)}catch(e){return!1}}static isNullOrEmpty(e){return NullChecker.isNull(e)||NullChecker.isEmpty(e)}}e.NullChecker=NullChecker}(Pacem||(Pacem={})),Number.prototype.isCloseTo=function(e,t=14){return this.toFixed(t)===e.toFixed(t)},Number.prototype.roundoff=function(e=14){return parseFloat(this.toFixed(e))},Number.prototype.clamp=function(e,t){let r=this;return null==e||isNaN(e)||(r=Math.max(r,e)),null==t||isNaN(t)||(r=Math.min(r,t)),r},Number.prototype.toBase62=function(){for(var e=this,t="";0!=e;){t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(e%62)+t,e=Math.floor(e/62)}return t},Number.prototype.toBase36=function(){return this.toString(36)},function(e){e.Numbers=class Numbers{static round(e,t=1){return Math.round(e/t)*t}static log(e,t){return Math.log10(e)/Math.log10(t)}static rebase(e,t,r){const n=e.toString(),a=parseInt(n,t);return n.endsWith(a.toString(t))?parseInt(e.toString(),t).toString(r):Number.NaN.toString()}}}(Pacem||(Pacem={})),function(e){function t(e,t){const r=e.length,n=t.length,a=Array.from({length:r+1},()=>Array(n+1).fill(0));for(let s=1;s<=r;s++)for(let r=1;r<=n;r++)e[s-1]===t[r-1]?a[s][r]=a[s-1][r-1]+1:a[s][r]=Math.max(a[s-1][r],a[s][r-1]);return a}function r(e,t,r,n=""){const a=e.length,s=t.length,i=[];let o=a,c=s,l=null;const u=()=>{l&&(i.push(l),l=null)};for(;o>0||c>0;){var h=null;let a=null;o>0&&c>0&&e[o-1]===t[c-1]?(h="=",a=e[o-1],o--,c--):c>0&&(0===o||r[o][c-1]>=r[o-1][c])?(h="+",a=t[c-1],c--):o>0&&(0===c||r[o-1][c]>r[o][c-1])&&(h="-",a=e[o-1],o--),h&&null!==a?l&&l.type===h?l.value=a+(l.value?n:"")+l.value:(u(),l={type:h,value:a}):u()}return u(),i.reverse()}e.Strings=class Strings{static leftPad(e,t,r){let n=e.toString();for(;n.length<t;)n=r+n;return n}static format(t,...r){const n=Array.from(r);let a=t;for(let e=0;e<n.length;e++){const t=new RegExp("(^|[^\\{])\\{"+e+"\\}($|[^\\}])","g");a=a.replaceAll(t,(t,...r)=>t.replace("{"+e+"}",n[e]))}const s=/(^|[^\{}])\{(\d+)\}($|[^\}])/.exec(a);if(!e.NullChecker.isNullOrEmpty(s))throw new Error(`Missing argument at index ${s[2]}.`);return a}static diff(e,n,a="char"){switch(a){case"line":return function(e,n){const a=/\r?\n/,s=e.split(a),i=n.split(a);return r(s,i,t(s,i),"\n")}(e,n);case"word":return function(e,n){const a=/(\S+|\s+)/g,s=e.match(a)||[],i=n.match(a)||[];return r(s,i,t(s,i),"")}(e,n);default:return function(e,n){const a=e.split(""),s=n.split("");return r(a,s,t(a,s),"")}(e,n)}}static async hash(e,t="SHA-256"){const r=await crypto.subtle.digest(t,(new TextEncoder).encode(e));return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}}}(Pacem||(Pacem={})),function(e){!function(e){class LexerClass{tokenize(e,t){const r=[];for(;e;){const n=e.length;for(let n of t){const t=n.exec(e,this),a=t?.length;if(a>0){Array.prototype.push.apply(r,t);const n=t[a-1];e=e.substr((n.index||0)+n.raw.length);break}}if(e.length>=n)throw new Error(`Cannot parse\n"${e}"\n using the provided grammar.`)}return r}}e.Parser=class Parser{_lexer;constructor(e=new LexerClass){this._lexer=e}parse(e,t,r){const n=this._lexer.tokenize(e,t);return r.render(n)}}}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(e){return(e??"").replace(/</g,"&lt;")}function n(e){return e?.index||void 0}function a(e){return e?.replace(/[^\w]+/g," ").trim().replace(/ +/g,"-").toLowerCase()}function s(e,t,r){const n=t.exec(e);return n&&n.length?r(n):null}const i=/(<!--)([\s\S]*?)(-->|$)/,o=/^ {0,3}(={3,}|_{3,}|-{3,})(\r?\n|$)/,c=/^ {0,3}(#{1,6})\s+([^\n]+)(\r?\n|$)+/,l=/^ {0,3}([^\n]+)(\r?\n=+(\r?\n|$))+/,u=/^ {0,3}([^\n]+)(\r?\n-+(\r?\n|$))+/,h=/^ {4,}.+(\r?\n {4,}.+)*(\r?\n|$)+/,d=/^ {0,3}``` *([^\n]*)\r?\n(([\s\S](?!\r?\n {0,3}```))*.(\r?\n)+) {0,3}```(\r?\n|$)+/,g=/^ {0,3}> *([^\n]+)(\r?\n {0,3}> *([^\n]*))*(\r?\n|$)+/,f=/^( {0,3}([-+]).*\r?\n|$)((?!(?: {0,3}(?:\d+[.\)]|\r?\n\S))).*(\r?\n|$))*/,p=/^( {0,3}(\d+[.\)]).*\r?\n|$)((?!(?: {0,3}(?:[+-]|\r?\n\S))).*(\r?\n|$))*/,m=/^(?:[-+*]|\d+[.\)])/m,y=/^(?! {4,})(.+(\n(?! {0,3}```)(?! {0,3}([-+]|\d+[.\)]))(?! {4,})(?! {0,3}>).+)*)/,x=/^ {0,3}(!?)\[([^\]]+)\]: +(\S+)(?: +['"\(](.+)['"\)])?(\r?\n|$)+/,b=/!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?(\[[^\[\]]*\]|\([^\(\)]*\))?/,w=/(\*\*?|__?)(\[[^\]]*]\([^\)]+\))\1/,k=/(?:(?<!\\)`)(.+?)(?:(?<!\\)`)/,C=/(\*\*?|__?)((?!\1\s?)(?:(?!\1)[\S\s])*[^\s])\1/,$=/(~~?|__?)(?!\1\s?)([^\s][\s\S]*?(?!\1)[^\s])\1/,N=/(:")(?!":\s?)([^\s][\s\S]*?(?!":)[^\s])":/,M=/^\s+/,R=/ {2,}\r?\n/,I=/^[^\r\n]+/;let S,P;function L(t=[]){const L={[P.Comment]:{exec:(e,t)=>s(e,i,r=>{const a=n(r),s=[{type:S.Html,index:a,raw:r[0],text:r[2]}];if(a>0){const r=e.substr(0,a),n=t.tokenize(r,U);Array.prototype.unshift.apply(s,n)}return s})},[P.Reference]:{exec:e=>s(e,x,e=>{const t=n(e),r=e[0],a=r,s="!"===e[1],i=e[2],o=e[3],c=e[4];return[{type:S.Reference,index:t,raw:r,text:a,id:i,image:s,url:o,title:c}]})}},B=[],v=[],z={};for(let e of t){let t,r="inline";switch("type"in e?(r=e.type,t=e.rule):t=e,r){case"block":B.push(t);break;case"code":if("lang"in e){const r=e.lang.toLowerCase();(z[r]=z[r]||[]).push(t)}break;default:const r={exec:(e,r)=>{const n=t.exec(e,r);return O(e,n,r),n}};v.push(r)}}const _={[P.Text]:{exec:e=>s(e,I,e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:S.Text}]})},[P.Space]:{exec:e=>s(e,M,e=>{const t=e[0];return[{type:S.Space,raw:t,text:t}]})}},E={[P.ImageOrLink]:{exec:(t,r)=>T(t,b,r,t=>{const s=n(t),i=t[0],o="!"===i.charAt(0),c=t[1],l=function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\[/.test(t)&&/\]$/.test(t)))return/^\(/.test(t)&&/\)$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2]),u=a(function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\(/.test(t)&&/\)$/.test(t)))return/^\[/.test(t)&&/\]$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2])??c);return o?[{index:s,type:l?S.Image:S.ImageLike,raw:i,text:c,src:l,ref:u,tokens:r.tokenize(c,A)}]:[{index:s,type:l?S.Link:S.LinkLike,raw:i,text:c,href:l,ref:u,tokens:r.tokenize(c,A)}]})},[P.Code]:{exec:(e,t)=>T(e,k,t,e=>{const t=r(e[1]);return[{type:S.Code,raw:e[0],text:t,index:n(e)}]})},[P.EmphasizedLink]:{exec:(t,r)=>T(t,w,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?S.Bold:S.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.Emphasize]:{exec:(t,r)=>T(t,C,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?S.Bold:S.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.StrikeThrough]:{exec:(t,r)=>T(t,$,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=S.StrikeThrough,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.Quote]:{exec:(t,r)=>T(t,N,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=S.Quote,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.LineBreak]:{exec:(e,t)=>T(e,R,t,e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:S.LineBreak}]})}},O=(e,t,r)=>{const n=t?.length>0&&t[0].index;if(n>0){const a=e.substr(0,n),s=r.tokenize(a,A)||[];Array.prototype.unshift.apply(t,s)}},T=(e,t,r,n)=>{const a=s(e,t,r=>{if(t!=k){const t=k.exec(e);if(t&&t.length&&t.index<r.index)return null}return n(r)});return O(e,a,r),a},A=Object.values(E);Array.prototype.push.apply(A,v),A.push(_[P.Text],_[P.Space]);const D=e=>{const t=[_[P.Text],_[P.Space]],r=e?.toLowerCase()||"";return r&&r in z&&Array.prototype.unshift.apply(t,z[r]),t},H={[P.Paragraph]:{exec:(e,t)=>s(e,y,e=>{const r=e[0],n=r;return[{type:S.Paragraph,raw:r,text:n,tokens:t.tokenize(n,A)}]})},[P.Space]:_[P.Space]},j=(e,t)=>{const r=/^ {0,3}(`{3,}|$|>|[+-]\s|\d+[.\)])/m.test(e)?U:A;return t.tokenize(e,r)},F={[P.HorizontalRule]:{exec:(e,t)=>s(e,o,e=>{const t=e[0],r=t;return[{type:S.HorizontalRule,raw:t,text:r}]})},[P.Heading]:{exec:(e,t)=>s(e,c,e=>{const r=e[2];return[{type:S.Heading,raw:e[0],text:r,level:e[1].length,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.Heading1]:{exec:(e,t)=>s(e,l,e=>{const r=e[1];return[{type:S.Heading,raw:e[0],text:r,level:1,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.Heading2]:{exec:(e,t)=>s(e,u,e=>{const r=e[1];return[{type:S.Heading,raw:e[0],text:r,level:2,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.CodeBlock]:{exec:(e,t)=>s(e,h,e=>{const n=e[0],a=r(n);return[{type:S.CodeBlock,raw:n,text:a,tokens:t.tokenize(a,[])}]})},[P.Fences]:{exec:(e,t)=>s(e,d,e=>{const n=r(e[2]),a=e[1]?.toLowerCase();return[{type:S.CodeBlock,raw:e[0],text:n,lang:a,tokens:t.tokenize(n,D(a))}]})},[P.BlockQuote]:{exec:(e,t)=>s(e,g,e=>{const r=e[0],n=r.replace(/^ {0,3}> */gm,"");return[{type:S.BlockQuote,raw:r,text:n,tokens:t.tokenize(n,[H[P.Paragraph],H[P.Space]])}]})},[P.OrderedList]:{exec:(t,r)=>s(t,p,t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(e=>e.trim());return[{type:S.OrderedList,start:parseInt(/\d/.exec(t[0])[0]),raw:n,text:n,tokens:a.map(e=>({type:S.ListItem,raw:e,text:e,tokens:j(e,r)}))}]})},[P.UnorderedList]:{exec:(t,r)=>s(t,f,t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(e=>e.trim());return[{type:S.UnorderedList,raw:n,text:n,tokens:a.map(e=>({type:S.ListItem,raw:e,text:e,tokens:j(e,r)}))}]})}},U=Object.values(F);return Array.prototype.push.apply(U,B),U.push(H[P.Paragraph],H[P.Space]),[L[P.Comment],L[P.Reference]].concat(U)}!function(e){e.Html="html",e.Text="text",e.Paragraph="paragraph",e.BlockQuote="blockquote",e.Space="space",e.Heading="heading",e.Bold="bold",e.Italic="italic",e.CodeBlock="codeblock",e.Code="code",e.Image="img",e.ImageLike="imglike",e.Link="link",e.LinkLike="linklike",e.LineBreak="br",e.StrikeThrough="strike",e.Quote="quote",e.HorizontalRule="hr",e.OrderedList="ol",e.UnorderedList="ul",e.ListItem="listitem",e.Reference="ref"}(S||(S={})),function(e){e[e.Comment=0]="Comment",e[e.Reference=1]="Reference",e[e.HorizontalRule=2]="HorizontalRule",e[e.Heading=3]="Heading",e[e.Heading1=4]="Heading1",e[e.Heading2=5]="Heading2",e[e.CodeBlock=6]="CodeBlock",e[e.Fences=7]="Fences",e[e.BlockQuote=8]="BlockQuote",e[e.OrderedList=9]="OrderedList",e[e.UnorderedList=10]="UnorderedList",e[e.Paragraph=11]="Paragraph",e[e.EmphasizedLink=12]="EmphasizedLink",e[e.ImageOrLink=13]="ImageOrLink",e[e.Emphasize=14]="Emphasize",e[e.StrikeThrough=15]="StrikeThrough",e[e.Quote=16]="Quote",e[e.Code=17]="Code",e[e.LineBreak=18]="LineBreak",e[e.Text=254]="Text",e[e.Space=255]="Space"}(P||(P={}));const B=/[ \r\n]*\0+[ \r\n]*/g;class HtmlRenderer{_extraItemRender;constructor(e=(e,t)=>e?.text||""){this._extraItemRender=e}_renderContent=t=>{const r=t.tokens;return e.NullChecker.isNullOrEmpty(r)?t.text:this._render(r)};_rendeItem(e,t){const r=this._renderContent,n="\0";switch(e?.type){case S.Reference:return"";case S.Html:return e.raw;case S.BlockQuote:return`<blockquote>\n${r(e)}</blockquote>${n}`;case S.Bold:return`<b>${r(e)}</b>`;case S.CodeBlock:const a=e.lang;return`<pre>${n}<code${a?' class="'+a+'"':""}>${r(e)}</code>${n}</pre>${n}`;case S.Code:return`<code>${r(e)}</code>`;case S.HorizontalRule:return`<hr />${n}`;case S.Heading:const s=e.level;return`<h${s} id="${e.ref}">${r(e)}</h${s}>${n}`;case S.Image:case S.ImageLike:const i=e;let o=i.src,c="";const l=i.text,u=i.ref;if(!o&&u){const e=t.find(e=>e.type===S.Reference&&!0===e.image&&e.id?.toLowerCase()===u.toLowerCase());e&&(o=e.url,c=e.title??"")}return o?`<img src="${o}" alt="${l}"${c?' title="'+c+'"':""} />`:`![${r(e)}]`;case S.Italic:return`<i>${r(e)}</i>`;case S.StrikeThrough:return`<s>${r(e)}</s>`;case S.Quote:return`<q>${r(e)}</q>`;case S.LineBreak:return"<br />\0";case S.OrderedList:return`<ol start="${e.start}">\n${r(e)}</ol>${n}`;case S.UnorderedList:return`<ul>\n${r(e)}</ul>${n}`;case S.ListItem:return`\t<li>${r(e)}</li>${n}`;case S.Link:case S.LinkLike:const h=e;let d=h.href,g="";const f=h.ref;if(!d&&f){const e=t.find(e=>e.type===S.Reference&&!0!==e.image&&e.id?.toLowerCase()===f.toLowerCase());e&&(d=e.url,g=e.title??"")}return d?`<a href="${d}"${g?' title="'+g+'"':""}>${r(e)}</a>`:`[${r(e)}]`;case S.Paragraph:return`<p>${r(e)}</p>${n}`;case S.Text:case S.Space:return e.text}return this._extraItemRender(e,t)}_render(e){let t="";for(let r of e||[])t+=this._rendeItem(r,e);return t}render(e){return t=this._render(e),t?.replace(B,"\n").trim();var t}}class TokenRenderer{_render(t){return e.NullChecker.isNullOrEmpty(t)?"":JSON.stringify(t)}render(t){return"["+t.filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(this._render).join(",")+"]"}}class Parser extends e.Compile.Parser{toHtml(t,r,n){const a=new HtmlRenderer(n);return e.NullChecker.isNullOrEmpty(r)?this.parse(t,a):this.parse(t,L(r),a)}tokenize(e,t){const r=this.parse(e,L(t),new TokenRenderer);return JSON.parse(r)}parse(e,t=L(),r=new HtmlRenderer){return(n=t)&&"object"==typeof n&&"function"==typeof n.render?super.parse(e,L(),t):super.parse(e,t,r);var n}}t.Parser=Parser}(t.Markdown||(t.Markdown={}))}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={}));
6
+ "use strict";var Pacem;!function(e){e.Arrays=class Arrays{static range(t,r,n=2){let a=t;e.NullChecker.isNull(r)&&(r=n=t,t=1);const s=(r-t)/(n-1),i=[];if(s>0)for(;i.length<n;)i.push(a.roundoff()),a+=s;return i}static chunkify(t,r){if(e.NullChecker.isNullOrEmpty(t))return[];if(r<=0||r%1!=0)throw new Error("Provide a positive integer number.");const n=Math.ceil(t.length/r);return Array.from({length:n},(e,n)=>{const a=n*r,s=a+r;return t.slice(a,s)})}}}(Pacem||(Pacem={})),function(e){class Blobs{static blobToDataURL(e){return new Promise((t,r)=>{const n=new FileReader;n.onload=e=>{t(e.target.result)},n.readAsDataURL(e)})}static _b64ToUint8Array(e){let t=e.length;const r=new Uint8Array(t);for(;t--;)r[t]=e.charCodeAt(t);return r}static base64ToBlob(e,t){const r=Blobs._b64ToUint8Array(atob(e));return new Blob([r],t)}static dataURLToBlob(e){const t=e.indexOf(",");if(-1===t)return Blobs.base64ToBlob(e);{const r=e.substring(t+1),n=e.substring(0,t).match(/:(.*?);/)[1];return Blobs.base64ToBlob(r,{type:n})}}static blobToText(e,t){return new Promise((r,n)=>{e.arrayBuffer().then(e=>{const n=new TextDecoder(t).decode(e);r(n)})})}static textToBlob(e,t="text/plain"){const r=(new TextEncoder).encode(e);return new Blob([r],{type:t})}}e.Blobs=Blobs}(Pacem||(Pacem={})),function(e){!function(e){const t=(e,t)=>{const r=e.match(t);return r?r[2]:null};e.detect=function(e=navigator.userAgent){let r="unknown",n=null;switch(/ucbrowser/i.test(e)?r="UCBrowser":/edg/i.test(e)?r="Edge":/googlebot/i.test(e)?r="GoogleBot":/chromium/i.test(e)?r="Chromium":/firefox|fxios/i.test(e)&&!/seamonkey/i.test(e)?r="Firefox":/; msie|trident/i.test(e)&&!/ucbrowser/i.test(e)?r="IE":/chrome|crios/i.test(e)&&!/opr|opera|chromium|edg|ucbrowser|googlebot/i.test(e)?r="Chrome":/safari/i.test(e)&&!/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i.test(e)?r="Safari":/opr|opera/i.test(e)&&(r="Opera"),r){case"UCBrowser":n=t(e,/(ucbrowser)\/([\d\.]+)/i);break;case"Edge":n=t(e,/(edge|edga|edgios|edg)\/([\d\.]+)/i);break;case"GoogleBot":n=t(e,/(googlebot)\/([\d\.]+)/i);break;case"Chromium":n=t(e,/(chromium)\/([\d\.]+)/i);break;case"Firefox":n=t(e,/(firefox|fxios)\/([\d\.]+)/i);break;case"Chrome":n=t(e,/(chrome|crios)\/([\d\.]+)/i);break;case"Safari":n=t(e,/(safari)\/([\d\.]+)/i);break;case"Opera":n=t(e,/(opera|opr)\/([\d\.]+)/i);break;case"IE":{const r=t(e,/(trident)\/([\d\.]+)/i);n=r?`${parseFloat(r)+4}`:"7.0";break}default:n="0.0.0.0"}return{name:r,version:n}}}(e.Browsers||(e.Browsers={}))}(Pacem||(Pacem={})),function(e){const t=/^hsl\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*\)$/,r=/^hsla\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)\)$/,n=/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,a=/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\)$/,s=/^#[a-f0-9]{6}$/,i=/^#[a-f0-9]{3}$/;function o(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"r"in t&&"g"in t&&"b"in t&&"number"==typeof t.r&&"number"==typeof t.b&&"number"==typeof t.g&&(t.a??=1,t.r>=0&&t.r<=1&&t.g>=0&&t.g<=1&&t.b>=0&&t.b<=1&&t.a>=0&&t.a<=1)}function c(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"h"in t&&"s"in t&&"l"in t&&"number"==typeof t.h&&"number"==typeof t.s&&"number"==typeof t.l&&(t.a??=1,t.h>=0&&t.h<=360&&t.s>=0&&t.s<=1&&t.l>=0&&t.l<=1&&t.a>=0&&t.a<=1)}const l={adjustRgbChannel:e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4),adjustRgbChannelInv:e=>e<=.00304?12.92*e:1.055*(Math.pow(e,1/2.4)-.055),adjustRgb:e=>({r:l.adjustRgbChannel(e.r),g:l.adjustRgbChannel(e.g),b:l.adjustRgbChannel(e.b),a:e.a}),adjustRgbInv:e=>({r:l.adjustRgbChannelInv(e.r),g:l.adjustRgbChannelInv(e.g),b:l.adjustRgbChannelInv(e.b),a:e.a}),X:e=>.4125*e.r+.3576*e.g+.1804*e.b,Y:e=>.2126*e.r+.7152*e.g+.0722*e.b,Z:e=>.0193*e.r+.1191*e.g+.9503*e.b,relativeLuminance:e=>{const t=l.adjustRgb(e);return l.Y(t)},rgbToCieXYZ:e=>{const t=l.adjustRgb(e);return{x:l.X(t),y:l.Y(t),z:l.Z(t),a:e.a}},cieXYZToRgb:e=>{const t=3.241*e.x-1.5374*e.y-.4986*e.z,r=-.9692*e.x+1.876*e.y+.0416*e.z,n=.0556*e.x-.204*e.y+1.057*e.z;return l.adjustRgbInv({r:t,g:r,b:n,a:e.a})},contrastRatio:(e,t)=>{const r=l.relativeLuminance(e)+.05,n=l.relativeLuminance(t)+.05;return r>n?r/n:n/r}};function u(t){return e.Strings.leftPad(t.toString(16),2,"0")}class Colors{static WCAG_MINIMUM_CONTRAST=3;static WCAG_NORMAL_TEXT_CONTRAST=4.5;static WCAG_SAFE_CONTRAST=7;static _clampRGB(e){const t=e=>Math.min(1,Math.max(0,e));return null==e[3]&&(e[3]=1),{r:t(e[0]),g:t(e[1]),b:t(e[2]),a:Math.min(1,Math.max(0,e[3]))}}static _normalize(e){return[e[0]/255,e[1]/255,e[2]/255,e[3]]}static parse(e){if(e=(e||"").toLowerCase(),n.test(e)){let t=n.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),1]))}if(a.test(e)){let t=a.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),parseFloat(t[4])]))}if(s.test(e)){let t=s.exec(e)[0];return this._clampRGB(this._normalize([parseInt("0x"+t.substr(1,2)),parseInt("0x"+t.substr(3,2)),parseInt("0x"+t.substr(5,2)),1]))}if(i.test(e)){let t=i.exec(e)[0],r=t.substr(1,1),n=t.substr(2,1),a=t.substr(3,1);return this._clampRGB(this._normalize([parseInt("0x"+r+r),parseInt("0x"+n+n),parseInt("0x"+a+a),1]))}if(t.test(e)){let r=t.exec(e);const n={h:parseFloat(r[1]),s:.01*parseFloat(r[2]),l:.01*parseFloat(r[3])};return this.rgb(n)}if(r.test(e)){let t=r.exec(e);const n={h:parseFloat(t[1]),s:.01*parseFloat(t[2]),l:.01*parseFloat(t[3]),a:parseFloat(t[4])};return this.rgb(n)}}static hsl(e){const t=function(e){const t=e.r,r=e.g,n=e.b;return(.5*(Math.max(t,r,n)+Math.min(t,r,n))).clamp(0,1)}(e),r=function(e,t){const r=e.r,n=e.g,a=e.b,s=Math.max(r,n,a),i=Math.min(r,n,a);return(0===t||1===t?0:(s-i)/(1-Math.abs(2*t-1))).clamp(0,1)}(e,t),n=function(e){const t=e.r,r=e.g,n=e.b,a=Math.max(t,r,n),s=Math.min(t,r,n);let i=0;return a!==s&&(i=a===t?((r-n)/(a-s)*60+360)%360:a===r?((n-t)/(a-s)*60+120)%360:((t-r)/(a-s)*60+240)%360),i.clamp(0,360)}(e);return{h:n,s:r,l:t,a:e.a}}static cieXYZ(e){return c(e)&&(e=this.rgb(e)),l.rgbToCieXYZ(e)}static rgb(e){if(!c(e)){const t=l.cieXYZToRgb(e);return this._clampRGB([t.r,t.g,t.b,t.a])}{const t=e.h,r=e.s,n=e.l,a=t/60,s=(1-Math.abs(2*n-1))*r,i=s*(1-Math.abs(a%2-1)),o=n-s/2,c=(t,r,n)=>this._clampRGB([t+o,r+o,n+o,e.a]);if(a<=1)return c(s,i,0);if(a<=2)return c(i,s,0);if(a<=3)return c(0,s,i);if(a<=4)return c(0,i,s);if(a<=5)return c(i,0,s);if(a<=6)return c(s,0,i)}}static stringify(e,t=1){if(c(e)){t??=1,e.a??=1;const r="number"==typeof t?t:1;return`hsla(${e.h.roundoff(r)},${(100*e.s).roundoff(r)}%,${(100*e.l).roundoff(r)}%,${e.a.roundoff()})`}if(o(e)){t??=!0,e.a??=1;const r="boolean"==typeof t?t:!!t,n=Math.round(255*e.r),a=Math.round(255*e.g),s=Math.round(255*e.b),i=e.a.roundoff();return 1===i?r?("#"+u(n)+u(a)+u(s)).toUpperCase():`rgb(${n},${a},${s})`:`rgba(${n},${a},${s},${i})`}}static contrastRatio(e,t){return c(e)&&(e=this.rgb(e)),c(t)&&(t=this.rgb(t)),l.contrastRatio(e,t)}static luminance(e){return c(e)&&(e=Colors.rgb(e)),l.relativeLuminance(e)}static lighten(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.l+t));return Object.assign({},e,{l:r})}if(o(e)){const r=this.lighten(this.hsl(e),t);return this.rgb(r)}return e}static darken(e,t=.1){return this.lighten(e,-t)}static saturate(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.s+t));return Object.assign({},e,{s:r})}if(o(e)){const r=this.saturate(this.hsl(e),t);return this.rgb(r)}return e}static desaturate(e,t=.1){return this.saturate(e,-t)}static interpolate(e,t,r,n){r??=.5,n??=r;const a=(r+n).roundoff(),s=(r/a).roundoff(),i=(n/a).roundoff(),l=o(e),u=c(e),h=e=>o(e)||c(e)?Colors.cieXYZ(e):e;e=h(e),t=h(t);const d={x:(e.x*s+t.x*i).roundoff(),y:(e.y*s+t.y*i).roundoff(),z:(e.z*s+t.z*i).roundoff(),a:(e.a*s+t.a*i).roundoff()};return l?Colors.rgb(d):u?Colors.hsl(Colors.rgb(d)):d}}e.Colors=Colors}(Pacem||(Pacem={})),function(e){const t=/^\/Date\([\d]+\)\/$/i;class Dates{static parse(e){let r;return"string"==typeof e?(r=t.test(e)?parseInt(e.substring(6)):Date.parse(e),new Date(r)):"number"==typeof e?new Date(e):e}static isLeapYear(e){return e%4==0&&e%100!=0||e%400==0}static daysInMonth(e,t){return[31,Dates.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]}static isDate(e){return e instanceof Date&&!isNaN(e.valueOf())}static dateOnly(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}static addMonths(e,t){let r=e.getDate(),n=new Date(e),a=n.getMonth()+t,s=0;for(;a<0;)a+=12,s--;return n.setDate(1),n.setMonth(a%12),n.setFullYear(n.getFullYear()+s+Math.floor(a/12)),n.setDate(Math.min(r,Dates.daysInMonth(n.getFullYear(),n.getMonth()))),n}static addDays(e,t){return new Date(e.valueOf()+864e5*t)}static daysBetween(e,t){return(t.valueOf()-e.valueOf())/864e5}}e.Dates=Dates}(Pacem||(Pacem={})),function(e){const t=/[-+]?([\d]+(\.[\d]+(e-[\d]+)?)?|[\d]*(\.[\d]+(e-[\d]+)?))/g;function r(e){const r=[];let n=e.match(t);return n&&n.length>0&&n.forEach(e=>r.push(parseFloat(e))),r}e.parseAsNumericalArray=r;class Angle{static isAngle(e){return"object"==typeof e&&"vertex"in e&&Point.isPoint(e.vertex)&&"start"in e&&Point.isPoint(e.start)&&"end"in e&&Point.isPoint(e.end)}static value(t){if(e.NullChecker.isNullOrEmpty(t)||!Angle.isAngle(t))return Number.NaN;const{vertex:r,start:n,end:a}=t;return Angle.angleBetween(r,n,a)}static angleBetween(e,t,r){const n=t.x-e.x,a=t.y-e.y,s=r.x-e.x,i=r.y-e.y,o=n*s+a*i,c=n*i-a*s;return-Math.atan2(c,o)}}e.Angle=Angle;class Size{static parse(e){let t=r(e);if(t&&2===t.length)return{width:t[0],height:t[1]};throw new Error(`Cannot parse "${e}" as a valid Size.`)}static isSize(e){return"object"==typeof e&&"width"in e&&"number"==typeof e.width&&"height"in e&&"number"==typeof e.height}}e.Size=Size;class Point{static parse(e){let t=r(e);if(t&&2===t.length)return{x:t[0],y:t[1]};throw new Error(`Cannot parse "${e}" as a valid Point.`)}static isPoint(e){return"object"==typeof e&&"x"in e&&"number"==typeof e.x&&"y"in e&&"number"==typeof e.y}static distance(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static subtract(e,t){return{x:t.x-e.x,y:t.y-e.y}}static add(...e){var t={x:0,y:0};for(var r of e)t.x+=r.x,t.y+=r.y;return t}static multiply(e,t){return{x:e.x*t,y:e.y*t}}}e.Point=Point;class Rect{static parse(e){let t=r(e);if(t&&4===t.length)return{x:t[0],y:t[1],width:t[2],height:t[3]};throw new Error(`Cannot parse "${e}" as a valid Rect.`)}static isRect(e){return Point.isPoint(e)&&Size.isSize(e)}static _stretch(e,t){return{a:t.width/e.width,b:0,c:0,d:t.height/e.height,e:t.x-e.x,f:t.y-e.y}}static _contain(t,r,n,a){let s=1;s=t.width/t.height>=r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _cover(t,r,n,a){let s=1;s=t.width/t.height<r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _align(e,t,r,n){let a=0,s=0;switch(r){case"left":a=t.x-e.x;break;case"right":a=t.x+t.width-e.width-e.x;break;default:a=t.x+.5*t.width-.5*e.width-e.x}switch(n){case"top":s=t.y-e.y;break;case"bottom":s=t.y+t.height-e.height-e.y;break;default:s=t.y+.5*t.height-.5*e.height-e.y}return{x:a,y:s}}static findTransform(e,t,r="stretch",n="center",a="middle"){switch(r){case"contain":return this._contain(e,t,n,a);case"cover":return this._cover(e,t,n,a);default:return this._stretch(e,t)}}static intersect(...e){const t={x:0,y:0,height:0,width:0},r=Array.from(e||[]);if(r.length<=0)return t;for(var n=r[0],a=1;a<r.length;a++){const e=r[a],s=Math.max(e.x,n.x),i=Math.max(e.y,n.y),o=Math.min(e.x+e.width,n.x+n.width)-s,c=Math.min(e.y+e.height,n.y+n.height)-i;if(o<0||c<=0)return t;n={x:s,y:i,width:o,height:c}}return n}static expand(e,...t){const r=Array.from(t||[]);let n=e.x,a=e.y,s=n,i=a;Rect.isRect(e)&&(s+=e.width,i+=e.height);for(let e of r)n=Math.min(e.x,n),a=Math.min(e.y,a),s=Math.max(e.x,s),i=Math.max(e.y,i);return{x:n,y:a,width:s-n,height:i-a}}}e.Rect=Rect}(Pacem||(Pacem={})),function(e){e.HistoryService=class HistoryService{constructor(e,t){this.#e=e,this.#t=t}#r=[];#n=[];#t;#e;get current(){return this.#e}get canUndo(){return this.#r.length>0}get canRedo(){return this.#n.length>0}set maxlength(e){this.#t=e}undo(){if(this.canUndo){const e=this.#r,t=this.#n,r=this.#e;t.unshift(r),this.#e=e.pop()}}redo(){if(this.canRedo){const e=this.#r,t=this.#n,r=this.#e;e.push(r),this.#e=t.shift()}}push(e){this.#n.splice(0),this.#r.push(this.#e),this.#e=e;const t=this.#t,r=this.#r;t>0&&r.length>t&&r.splice(0,r.length-t)}reset(){this.#n.splice(0),this.#r.splice(0)}}}(Pacem||(Pacem={})),function(e){const t={mode:"stretch",align:"center",valign:"middle",quality:1,type:"image/jpeg"};class Imaging{static async loadImage(e){const t=await fetch(e);if(!t.ok)return null;return await t.blob()}static async resizeImage(r,n,a,s){if(n<=0||a<=0||isNaN(n)||isNaN(a))throw new Error("Invalid target size");"string"==typeof r&&(r=await Imaging.loadImage(r));const i=await self.createImageBitmap(r),o=i.width,c=i.height,l=new OffscreenCanvas(o,c),u=l.getContext("2d");u.imageSmoothingEnabled=u.mozImageSmoothingEnabled=u.oImageSmoothingEnabled=u.webkitImageSmoothingEnabled=!0;const{quality:h,type:d,mode:g,align:f,valign:p,background:m}=Object.assign({},t,s??{}),y={width:o,height:c,x:0,y:0},b={x:0,y:0,width:n,height:a},x=e.Rect.findTransform(y,b,g,f,p);l.width=n,l.height=a,m&&(u.fillStyle=m,u.fillRect(0,0,l.width,l.height)),u.setTransform(x),u.drawImage(i,0,0);return await l.convertToBlob({quality:h,type:d})}}e.Imaging=Imaging}(Pacem||(Pacem={})),function(e){class Keys{static#a;static uniqueId(){let e=Keys.#a||Date.now();return Keys.#a=++e}static uniqueCode(){return Keys.uniqueId().toBase62()}static randomString(e){let t="";do{t+=(62*Math.random()).toBase62()}while(t.length<e);return t}}e.Keys=Keys}(Pacem||(Pacem={})),function(e){class Matrix2D{static isIdentity(e){return 1===e.a&&1===e.d&&0===e.b&&0===e.f&&0===e.c&&0===e.e}static get identity(){return{a:1,b:0,c:0,d:1,e:0,f:0}}static copy(e){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}static scale(e,t,r=t){return{a:e.a*t,b:e.b,c:e.c,d:e.d*r,e:e.e,f:e.f}}static translate(e,t){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y}}static rotate(e,t){const r=Math.cos(t),n=Math.sin(t);return Matrix2D.multiply(e,{a:r,b:n,c:-n,d:r,e:0,f:0})}static multiply(e,t){return"x"in e&&"y"in e?"number"==typeof t?{x:e.x*t,y:e.y*t}:{x:e.x*t.a+e.y*t.c+t.e,y:e.x*t.b+e.y*t.d+t.f}:"number"==typeof t?{a:e.a*t,b:e.b*t,c:e.c*t,d:e.d*t,e:e.e*t,f:e.f*t}:{a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,e:e.e*t.a+e.f*t.c+t.e,f:e.e*t.b+e.f*t.d+t.f}}static det(e){return e.a*e.d-e.c*e.b}static invert(e){const t=this.det(e);if(0===t)return null;const r=1/t;return this.multiply({a:e.d,b:-e.b,c:-e.c,d:e.a,e:-e.e*e.d+e.c*e.f,f:e.e*e.b-e.a*e.f},r)}static toComponents(e,t={x:0,y:0}){const r=Math.sqrt(e.a*e.a+e.c*e.c),n=Math.sqrt(e.b*e.b+e.d*e.d),a=0!=r?e.a/r:0,s=0!=r?e.c/r:0,i=Math.atan2(s,a),{x:o,y:c}=t;return{scaleX:r,scaleY:n,rotation:i,translation:{x:e.e-o*(r*a-1)+c*r*s,y:e.f-c*(n*a-1)-o*n*s}}}}e.Matrix2D=Matrix2D}(Pacem||(Pacem={})),function(e){class NullChecker{static isNull(e){return null==e}static isEmpty(t){try{return Array.isArray(t)&&0===t.length||"string"==typeof t&&""===t||"object"==typeof t&&0===Object.keys(t).length&&!e.Dates.isDate(t)&&!(t instanceof RegExp)&&!(t instanceof FileSystemDirectoryHandle)&&!(t instanceof FileSystemFileHandle)}catch(e){return!1}}static isNullOrEmpty(e){return NullChecker.isNull(e)||NullChecker.isEmpty(e)}}e.NullChecker=NullChecker}(Pacem||(Pacem={})),Number.prototype.isCloseTo=function(e,t=14){const r=Number(`1e-${t}`);return this>e-r&&this<e+r},Number.prototype.roundoff=function(e=14){return parseFloat(this.toFixed(e))},Number.prototype.clamp=function(e,t){let r=this;return null==e||isNaN(e)||(r=Math.max(r,e)),null==t||isNaN(t)||(r=Math.min(r,t)),r},Number.prototype.toBase62=function(){for(var e=this,t="";0!=e;){t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(e%62)+t,e=Math.floor(e/62)}return t},Number.prototype.toBase36=function(){return this.toString(36)},function(e){e.Numbers=class Numbers{static round(e,t=1){return Math.round(e/t)*t}static log(e,t){return Math.log10(e)/Math.log10(t)}static rebase(e,t,r){const n=e.toString(),a=parseInt(n,t);return n.endsWith(a.toString(t))?parseInt(e.toString(),t).toString(r):Number.NaN.toString()}}}(Pacem||(Pacem={})),function(e){function t(e,t){const r=e.length,n=t.length,a=Array.from({length:r+1},()=>Array(n+1).fill(0));for(let s=1;s<=r;s++)for(let r=1;r<=n;r++)e[s-1]===t[r-1]?a[s][r]=a[s-1][r-1]+1:a[s][r]=Math.max(a[s-1][r],a[s][r-1]);return a}function r(e,t,r,n=""){const a=e.length,s=t.length,i=[];let o=a,c=s,l=null;const u=()=>{l&&(i.push(l),l=null)};for(;o>0||c>0;){var h=null;let a=null;o>0&&c>0&&e[o-1]===t[c-1]?(h="=",a=e[o-1],o--,c--):c>0&&(0===o||r[o][c-1]>=r[o-1][c])?(h="+",a=t[c-1],c--):o>0&&(0===c||r[o-1][c]>r[o][c-1])&&(h="-",a=e[o-1],o--),h&&null!==a?l&&l.type===h?l.value=a+(l.value?n:"")+l.value:(u(),l={type:h,value:a}):u()}return u(),i.reverse()}e.Strings=class Strings{static leftPad(e,t,r){let n=e.toString();for(;n.length<t;)n=r+n;return n}static format(t,...r){const n=Array.from(r);let a=t;for(let e=0;e<n.length;e++){const t=new RegExp("(^|[^\\{])\\{"+e+"\\}($|[^\\}])","g");a=a.replaceAll(t,(t,...r)=>t.replace("{"+e+"}",n[e]))}const s=/(^|[^\{}])\{(\d+)\}($|[^\}])/.exec(a);if(!e.NullChecker.isNullOrEmpty(s))throw new Error(`Missing argument at index ${s[2]}.`);return a}static diff(e,n,a="char"){switch(a){case"line":return function(e,n){const a=/\r?\n/,s=e.split(a),i=n.split(a);return r(s,i,t(s,i),"\n")}(e,n);case"word":return function(e,n){const a=/(\S+|\s+)/g,s=e.match(a)||[],i=n.match(a)||[];return r(s,i,t(s,i),"")}(e,n);default:return function(e,n){const a=e.split(""),s=n.split("");return r(a,s,t(a,s),"")}(e,n)}}static async hash(e,t="SHA-256"){const r=await crypto.subtle.digest(t,(new TextEncoder).encode(e));return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,"0")).join("")}}}(Pacem||(Pacem={})),function(e){!function(e){class LexerClass{tokenize(e,t){const r=[];for(;e;){const n=e.length;for(let n of t){const t=n.exec(e,this),a=t?.length;if(a>0){Array.prototype.push.apply(r,t);const n=t[a-1];e=e.substr((n.index||0)+n.raw.length);break}}if(e.length>=n)throw new Error(`Cannot parse\n"${e}"\n using the provided grammar.`)}return r}}e.Parser=class Parser{_lexer;constructor(e=new LexerClass){this._lexer=e}parse(e,t,r){const n=this._lexer.tokenize(e,t);return r.render(n)}}}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(e){return(e??"").replace(/</g,"&lt;")}function n(e){return e?.index||void 0}function a(e){return e?.replace(/[^\w]+/g," ").trim().replace(/ +/g,"-").toLowerCase()}function s(e,t,r){const n=t.exec(e);return n&&n.length?r(n):null}const i=/(<!--)([\s\S]*?)(-->|$)/,o=/^ {0,3}(={3,}|_{3,}|-{3,})(\r?\n|$)/,c=/^ {0,3}(#{1,6})\s+([^\n]+)(\r?\n|$)+/,l=/^ {0,3}([^\n]+)(\r?\n=+(\r?\n|$))+/,u=/^ {0,3}([^\n]+)(\r?\n-+(\r?\n|$))+/,h=/^ {4,}.+(\r?\n {4,}.+)*(\r?\n|$)+/,d=/^ {0,3}``` *([^\n]*)\r?\n(([\s\S](?!\r?\n {0,3}```))*.(\r?\n)+) {0,3}```(\r?\n|$)+/,g=/^ {0,3}> *([^\n]+)(\r?\n {0,3}> *([^\n]*))*(\r?\n|$)+/,f=/^( {0,3}([-+]).*\r?\n|$)((?!(?: {0,3}(?:\d+[.\)]|\r?\n\S))).*(\r?\n|$))*/,p=/^( {0,3}(\d+[.\)]).*\r?\n|$)((?!(?: {0,3}(?:[+-]|\r?\n\S))).*(\r?\n|$))*/,m=/^(?:[-+*]|\d+[.\)])/m,y=/^(?! {4,})(.+(\n(?! {0,3}```)(?! {0,3}([-+]|\d+[.\)]))(?! {4,})(?! {0,3}>).+)*)/,b=/^ {0,3}(!?)\[([^\]]+)\]: +(\S+)(?: +['"\(](.+)['"\)])?(\r?\n|$)+/,x=/!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?(\[[^\[\]]*\]|\([^\(\)]*\))?/,w=/(\*\*?|__?)(\[[^\]]*]\([^\)]+\))\1/,k=/(?:(?<!\\)`)(.+?)(?:(?<!\\)`)/,C=/(\*\*?|__?)((?!\1\s?)(?:(?!\1)[\S\s])*[^\s])\1/,$=/(~~?|__?)(?!\1\s?)([^\s][\s\S]*?(?!\1)[^\s])\1/,N=/(:")(?!":\s?)([^\s][\s\S]*?(?!":)[^\s])":/,M=/^\s+/,R=/ {2,}\r?\n/,I=/^[^\r\n]+/;let S,P;function L(t=[]){const L={[P.Comment]:{exec:(e,t)=>s(e,i,r=>{const a=n(r),s=[{type:S.Html,index:a,raw:r[0],text:r[2]}];if(a>0){const r=e.substr(0,a),n=t.tokenize(r,U);Array.prototype.unshift.apply(s,n)}return s})},[P.Reference]:{exec:e=>s(e,b,e=>{const t=n(e),r=e[0],a=r,s="!"===e[1],i=e[2],o=e[3],c=e[4];return[{type:S.Reference,index:t,raw:r,text:a,id:i,image:s,url:o,title:c}]})}},B=[],v=[],z={};for(let e of t){let t,r="inline";switch("type"in e?(r=e.type,t=e.rule):t=e,r){case"block":B.push(t);break;case"code":if("lang"in e){const r=e.lang.toLowerCase();(z[r]=z[r]||[]).push(t)}break;default:const r={exec:(e,r)=>{const n=t.exec(e,r);return O(e,n,r),n}};v.push(r)}}const _={[P.Text]:{exec:e=>s(e,I,e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:S.Text}]})},[P.Space]:{exec:e=>s(e,M,e=>{const t=e[0];return[{type:S.Space,raw:t,text:t}]})}},E={[P.ImageOrLink]:{exec:(t,r)=>T(t,x,r,t=>{const s=n(t),i=t[0],o="!"===i.charAt(0),c=t[1],l=function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\[/.test(t)&&/\]$/.test(t)))return/^\(/.test(t)&&/\)$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2]),u=a(function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\(/.test(t)&&/\)$/.test(t)))return/^\[/.test(t)&&/\]$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2])??c);return o?[{index:s,type:l?S.Image:S.ImageLike,raw:i,text:c,src:l,ref:u,tokens:r.tokenize(c,A)}]:[{index:s,type:l?S.Link:S.LinkLike,raw:i,text:c,href:l,ref:u,tokens:r.tokenize(c,A)}]})},[P.Code]:{exec:(e,t)=>T(e,k,t,e=>{const t=r(e[1]);return[{type:S.Code,raw:e[0],text:t,index:n(e)}]})},[P.EmphasizedLink]:{exec:(t,r)=>T(t,w,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?S.Bold:S.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.Emphasize]:{exec:(t,r)=>T(t,C,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?S.Bold:S.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.StrikeThrough]:{exec:(t,r)=>T(t,$,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=S.StrikeThrough,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.Quote]:{exec:(t,r)=>T(t,N,r,t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=S.Quote,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]})},[P.LineBreak]:{exec:(e,t)=>T(e,R,t,e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:S.LineBreak}]})}},O=(e,t,r)=>{const n=t?.length>0&&t[0].index;if(n>0){const a=e.substr(0,n),s=r.tokenize(a,A)||[];Array.prototype.unshift.apply(t,s)}},T=(e,t,r,n)=>{const a=s(e,t,r=>{if(t!=k){const t=k.exec(e);if(t&&t.length&&t.index<r.index)return null}return n(r)});return O(e,a,r),a},A=Object.values(E);Array.prototype.push.apply(A,v),A.push(_[P.Text],_[P.Space]);const D=e=>{const t=[_[P.Text],_[P.Space]],r=e?.toLowerCase()||"";return r&&r in z&&Array.prototype.unshift.apply(t,z[r]),t},H={[P.Paragraph]:{exec:(e,t)=>s(e,y,e=>{const r=e[0],n=r;return[{type:S.Paragraph,raw:r,text:n,tokens:t.tokenize(n,A)}]})},[P.Space]:_[P.Space]},j=(e,t)=>{const r=/^ {0,3}(`{3,}|$|>|[+-]\s|\d+[.\)])/m.test(e)?U:A;return t.tokenize(e,r)},F={[P.HorizontalRule]:{exec:(e,t)=>s(e,o,e=>{const t=e[0],r=t;return[{type:S.HorizontalRule,raw:t,text:r}]})},[P.Heading]:{exec:(e,t)=>s(e,c,e=>{const r=e[2];return[{type:S.Heading,raw:e[0],text:r,level:e[1].length,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.Heading1]:{exec:(e,t)=>s(e,l,e=>{const r=e[1];return[{type:S.Heading,raw:e[0],text:r,level:1,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.Heading2]:{exec:(e,t)=>s(e,u,e=>{const r=e[1];return[{type:S.Heading,raw:e[0],text:r,level:2,ref:a(r),tokens:t.tokenize(r,A)}]})},[P.CodeBlock]:{exec:(e,t)=>s(e,h,e=>{const n=e[0],a=r(n);return[{type:S.CodeBlock,raw:n,text:a,tokens:t.tokenize(a,[])}]})},[P.Fences]:{exec:(e,t)=>s(e,d,e=>{const n=r(e[2]),a=e[1]?.toLowerCase();return[{type:S.CodeBlock,raw:e[0],text:n,lang:a,tokens:t.tokenize(n,D(a))}]})},[P.BlockQuote]:{exec:(e,t)=>s(e,g,e=>{const r=e[0],n=r.replace(/^ {0,3}> */gm,"");return[{type:S.BlockQuote,raw:r,text:n,tokens:t.tokenize(n,[H[P.Paragraph],H[P.Space]])}]})},[P.OrderedList]:{exec:(t,r)=>s(t,p,t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(e=>e.trim());return[{type:S.OrderedList,start:parseInt(/\d/.exec(t[0])[0]),raw:n,text:n,tokens:a.map(e=>({type:S.ListItem,raw:e,text:e,tokens:j(e,r)}))}]})},[P.UnorderedList]:{exec:(t,r)=>s(t,f,t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(e=>e.trim());return[{type:S.UnorderedList,raw:n,text:n,tokens:a.map(e=>({type:S.ListItem,raw:e,text:e,tokens:j(e,r)}))}]})}},U=Object.values(F);return Array.prototype.push.apply(U,B),U.push(H[P.Paragraph],H[P.Space]),[L[P.Comment],L[P.Reference]].concat(U)}!function(e){e.Html="html",e.Text="text",e.Paragraph="paragraph",e.BlockQuote="blockquote",e.Space="space",e.Heading="heading",e.Bold="bold",e.Italic="italic",e.CodeBlock="codeblock",e.Code="code",e.Image="img",e.ImageLike="imglike",e.Link="link",e.LinkLike="linklike",e.LineBreak="br",e.StrikeThrough="strike",e.Quote="quote",e.HorizontalRule="hr",e.OrderedList="ol",e.UnorderedList="ul",e.ListItem="listitem",e.Reference="ref"}(S||(S={})),function(e){e[e.Comment=0]="Comment",e[e.Reference=1]="Reference",e[e.HorizontalRule=2]="HorizontalRule",e[e.Heading=3]="Heading",e[e.Heading1=4]="Heading1",e[e.Heading2=5]="Heading2",e[e.CodeBlock=6]="CodeBlock",e[e.Fences=7]="Fences",e[e.BlockQuote=8]="BlockQuote",e[e.OrderedList=9]="OrderedList",e[e.UnorderedList=10]="UnorderedList",e[e.Paragraph=11]="Paragraph",e[e.EmphasizedLink=12]="EmphasizedLink",e[e.ImageOrLink=13]="ImageOrLink",e[e.Emphasize=14]="Emphasize",e[e.StrikeThrough=15]="StrikeThrough",e[e.Quote=16]="Quote",e[e.Code=17]="Code",e[e.LineBreak=18]="LineBreak",e[e.Text=254]="Text",e[e.Space=255]="Space"}(P||(P={}));const B=/[ \r\n]*\0+[ \r\n]*/g;class HtmlRenderer{_extraItemRender;constructor(e=(e,t)=>e?.text||""){this._extraItemRender=e}_renderContent=t=>{const r=t.tokens;return e.NullChecker.isNullOrEmpty(r)?t.text:this._render(r)};_rendeItem(e,t){const r=this._renderContent,n="\0";switch(e?.type){case S.Reference:return"";case S.Html:return e.raw;case S.BlockQuote:return`<blockquote>\n${r(e)}</blockquote>${n}`;case S.Bold:return`<b>${r(e)}</b>`;case S.CodeBlock:const a=e.lang;return`<pre>${n}<code${a?' class="'+a+'"':""}>${r(e)}</code>${n}</pre>${n}`;case S.Code:return`<code>${r(e)}</code>`;case S.HorizontalRule:return`<hr />${n}`;case S.Heading:const s=e.level;return`<h${s} id="${e.ref}">${r(e)}</h${s}>${n}`;case S.Image:case S.ImageLike:const i=e;let o=i.src,c="";const l=i.text,u=i.ref;if(!o&&u){const e=t.find(e=>e.type===S.Reference&&!0===e.image&&e.id?.toLowerCase()===u.toLowerCase());e&&(o=e.url,c=e.title??"")}return o?`<img src="${o}" alt="${l}"${c?' title="'+c+'"':""} />`:`![${r(e)}]`;case S.Italic:return`<i>${r(e)}</i>`;case S.StrikeThrough:return`<s>${r(e)}</s>`;case S.Quote:return`<q>${r(e)}</q>`;case S.LineBreak:return"<br />\0";case S.OrderedList:return`<ol start="${e.start}">\n${r(e)}</ol>${n}`;case S.UnorderedList:return`<ul>\n${r(e)}</ul>${n}`;case S.ListItem:return`\t<li>${r(e)}</li>${n}`;case S.Link:case S.LinkLike:const h=e;let d=h.href,g="";const f=h.ref;if(!d&&f){const e=t.find(e=>e.type===S.Reference&&!0!==e.image&&e.id?.toLowerCase()===f.toLowerCase());e&&(d=e.url,g=e.title??"")}return d?`<a href="${d}"${g?' title="'+g+'"':""}>${r(e)}</a>`:`[${r(e)}]`;case S.Paragraph:return`<p>${r(e)}</p>${n}`;case S.Text:case S.Space:return e.text}return this._extraItemRender(e,t)}_render(e){let t="";for(let r of e||[])t+=this._rendeItem(r,e);return t}render(e){return t=this._render(e),t?.replace(B,"\n").trim();var t}}class TokenRenderer{_render(t){return e.NullChecker.isNullOrEmpty(t)?"":JSON.stringify(t)}render(t){return"["+t.filter(t=>!e.NullChecker.isNullOrEmpty(t)).map(this._render).join(",")+"]"}}class Parser extends e.Compile.Parser{toHtml(t,r,n){const a=new HtmlRenderer(n);return e.NullChecker.isNullOrEmpty(r)?this.parse(t,a):this.parse(t,L(r),a)}tokenize(e,t){const r=this.parse(e,L(t),new TokenRenderer);return JSON.parse(r)}parse(e,t=L(),r=new HtmlRenderer){return(n=t)&&"object"==typeof n&&"function"==typeof n.render?super.parse(e,L(),t):super.parse(e,t,r);var n}}t.Parser=Parser}(t.Markdown||(t.Markdown={}))}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.60.0 (https://js.pacem.it)
2
+ * pacem v0.60.1-mohr (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -18,14 +18,35 @@ declare namespace Pacem.Geometry.LinearAlgebra {
18
18
  }
19
19
  }
20
20
  declare namespace Pacem.Geometry {
21
- type Segment = [Point, Point];
22
- class Utils {
21
+ class Delaunay {
22
+ static triangulate(vertices: Point[]): number[];
23
+ }
24
+ }
25
+ declare namespace Pacem.Geometry {
26
+ export type Segment = [Point, Point];
27
+ export interface Polygon {
28
+ vertices: Point[];
29
+ }
30
+ type Mesh = Polygon & {
31
+ triangleIndices: number[];
32
+ };
33
+ type PolygonCompound = 'union' | 'intersect' | 'difference';
34
+ export class Utils {
23
35
  static slopeRad(p1: Point, p2: Point): number;
24
36
  static slopeRad2(p1: Point, p2: Point): number;
25
37
  static slopeDeg(p1: Point, p2: Point): number;
26
38
  static slopeDeg2(p1: Point, p2: Point): number;
27
39
  static intersect(...rects: Rect[]): Rect;
40
+ static intersect(polygon1: Polygon, polygon2: Polygon): Polygon[];
28
41
  static intersect(segment1: Segment, segment2: Segment): Point;
42
+ static boundingBox(vertices: Point[]): Rect;
43
+ static combinePolygons(polygon1: Polygon, polygon2: Polygon, operator: PolygonCompound): {
44
+ polygons: Polygon[];
45
+ mesh?: Mesh;
46
+ } | null;
47
+ private static _mergePolygons;
48
+ static mesh(...points: Point[]): any;
49
+ static mesh(points: Point[]): any;
29
50
  static intersectLines(segment1: Segment, segment2: Segment): Point;
30
51
  static intersectLines(m1: number, q1: number, m2: number, q2: number): Point;
31
52
  static intersectLines(mq1: [number, number], mq2: [number, number]): Point;
@@ -43,21 +64,32 @@ declare namespace Pacem.Geometry {
43
64
  static mq(segment: Segment): [number, number];
44
65
  private static _intersectSegments;
45
66
  private static _intersectRects;
67
+ private static _areClose;
68
+ static areClose(p1: Point, p2: Point): boolean;
69
+ static areClose(p1: Point, p2: Point, precision: number): boolean;
46
70
  static dot(v1: Point, v2: Point): number;
47
71
  static cross(v1: Point, v2: Point): number;
48
72
  static distance(p1: Point, p2: Point): number;
49
73
  static distance(p: Point, mq: [number, number]): number;
50
74
  static distance(segment: Segment): number;
75
+ private static _pointSegmentDistance;
76
+ static isWithin(p: Point, segment: Segment, clockwise: boolean): boolean;
77
+ static isWithin(p: Point, segment: Segment, clockwise: boolean, precision: number): boolean;
78
+ static isBeyond(p: Point, segment: Segment, clockwise: boolean): boolean;
79
+ static isBeyond(p: Point, segment: Segment, clockwise: boolean, precision: number): boolean;
51
80
  static inLine(p: Point, segment: Segment): boolean;
81
+ static inLine(p: Point, segment: Segment, precision: number): boolean;
52
82
  static inSegment(p: Point, segment: Segment): boolean;
83
+ static inSegment(p: Point, segment: Segment, precision: number): boolean;
53
84
  static inTriangle(p: Point, triangle: [Point, Point, Point]): boolean;
54
85
  static inPolygon(p: Point, vertices: Point[]): any;
55
86
  static inPolygon(p: Point, vertices: Point[], precision: number): any;
56
- static area(points: Point[]): number;
57
87
  static area(...points: Point[]): number;
88
+ static area(points: Point[]): number;
58
89
  static convexHull(...points: Point[]): Point[];
59
90
  static convexHull(points: Point[]): Point[];
60
91
  }
92
+ export {};
61
93
  }
62
94
  declare namespace Pacem.Geometry.LinearAlgebra {
63
95
  interface Point3D {
@@ -177,10 +209,8 @@ declare namespace Pacem.Geometry {
177
209
  export {};
178
210
  }
179
211
  declare namespace Pacem.Geometry {
180
- interface Polygon {
181
- vertices: Point[];
182
- }
183
212
  class Polygon {
213
+ private static readonly _eps;
184
214
  static isPolygon(obj: any): obj is Polygon;
185
215
  static from(...points: Point[]): Polygon;
186
216
  static contains(polygon: Polygon, p: Point): any;
@@ -192,6 +222,7 @@ declare namespace Pacem.Geometry {
192
222
  static isCounterClockwise(polygon: Polygon): boolean;
193
223
  static expand(polygon: Polygon, offset: number): Polygon;
194
224
  static area(polygon: Polygon): number;
225
+ static intersect(polygon1: Polygon, polygon2: Polygon): Polygon[];
195
226
  static convexHull(polygon: Polygon): Polygon;
196
227
  }
197
228
  }