@sockethub/activity-streams 4.4.0-alpha.3 → 4.4.0-alpha.5
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 +109 -9
- package/dist/activity-streams.js +462 -0
- package/dist/activity-streams.min.js +19 -2
- package/package.json +27 -31
- package/coverage/tmp/coverage-93035-1649152159175-0.json +0 -1
- package/dist/activity-streams.min.js.LICENSE.txt +0 -16
- package/karma.config.js +0 -22
- package/src/activity-streams.d.ts +0 -1
- package/src/activity-streams.js +0 -220
- package/src/activity-streams.test.js +0 -192
- package/webpack.config.js +0 -10
|
@@ -1,2 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var g=Object.create;var{getPrototypeOf:O,defineProperty:N,getOwnPropertyNames:E}=Object;var y=Object.prototype.hasOwnProperty;var b=(B,z,D)=>{D=B!=null?g(O(B)):{};let G=z||!B||!B.__esModule?N(D,"default",{value:B,enumerable:!0}):D;for(let Q of E(B))if(!y.call(G,Q))N(G,Q,{get:()=>B[Q],enumerable:!0});return G};var j=(B,z)=>()=>(z||B((z={exports:{}}).exports,z),z.exports);var w=j((i,I)=>{var c=Object.prototype.hasOwnProperty,X="~";function T(){}if(Object.create){if(T.prototype=Object.create(null),!new T().__proto__)X=!1}function p(B,z,D){this.fn=B,this.context=z,this.once=D||!1}function U(B,z,D,G,Q){if(typeof D!=="function")throw TypeError("The listener must be a function");var M=new p(D,G||B,Q),J=X?X+z:z;if(!B._events[J])B._events[J]=M,B._eventsCount++;else if(!B._events[J].fn)B._events[J].push(M);else B._events[J]=[B._events[J],M];return B}function _(B,z){if(--B._eventsCount===0)B._events=new T;else delete B._events[z]}function W(){this._events=new T,this._eventsCount=0}W.prototype.eventNames=function(){var z=[],D,G;if(this._eventsCount===0)return z;for(G in D=this._events)if(c.call(D,G))z.push(X?G.slice(1):G);if(Object.getOwnPropertySymbols)return z.concat(Object.getOwnPropertySymbols(D));return z};W.prototype.listeners=function(z){var D=X?X+z:z,G=this._events[D];if(!G)return[];if(G.fn)return[G.fn];for(var Q=0,M=G.length,J=Array(M);Q<M;Q++)J[Q]=G[Q].fn;return J};W.prototype.listenerCount=function(z){var D=X?X+z:z,G=this._events[D];if(!G)return 0;if(G.fn)return 1;return G.length};W.prototype.emit=function(z,D,G,Q,M,J){var Y=X?X+z:z;if(!this._events[Y])return!1;var H=this._events[Y],Z=arguments.length,$,R;if(H.fn){if(H.once)this.removeListener(z,H.fn,void 0,!0);switch(Z){case 1:return H.fn.call(H.context),!0;case 2:return H.fn.call(H.context,D),!0;case 3:return H.fn.call(H.context,D,G),!0;case 4:return H.fn.call(H.context,D,G,Q),!0;case 5:return H.fn.call(H.context,D,G,Q,M),!0;case 6:return H.fn.call(H.context,D,G,Q,M,J),!0}for(R=1,$=Array(Z-1);R<Z;R++)$[R-1]=arguments[R];H.fn.apply(H.context,$)}else{var x=H.length,K;for(R=0;R<x;R++){if(H[R].once)this.removeListener(z,H[R].fn,void 0,!0);switch(Z){case 1:H[R].fn.call(H[R].context);break;case 2:H[R].fn.call(H[R].context,D);break;case 3:H[R].fn.call(H[R].context,D,G);break;case 4:H[R].fn.call(H[R].context,D,G,Q);break;default:if(!$)for(K=1,$=Array(Z-1);K<Z;K++)$[K-1]=arguments[K];H[R].fn.apply(H[R].context,$)}}}return!0};W.prototype.on=function(z,D,G){return U(this,z,D,G,!1)};W.prototype.once=function(z,D,G){return U(this,z,D,G,!0)};W.prototype.removeListener=function(z,D,G,Q){var M=X?X+z:z;if(!this._events[M])return this;if(!D)return _(this,M),this;var J=this._events[M];if(J.fn){if(J.fn===D&&(!Q||J.once)&&(!G||J.context===G))_(this,M)}else{for(var Y=0,H=[],Z=J.length;Y<Z;Y++)if(J[Y].fn!==D||Q&&!J[Y].once||G&&J[Y].context!==G)H.push(J[Y]);if(H.length)this._events[M]=H.length===1?H[0]:H;else _(this,M)}return this};W.prototype.removeAllListeners=function(z){var D;if(z){if(D=X?X+z:z,this._events[D])_(this,D)}else this._events=new T,this._eventsCount=0;return this};W.prototype.off=W.prototype.removeListener;W.prototype.addListener=W.prototype.on;W.prefixed=X;W.EventEmitter=W;if(typeof I<"u")I.exports=W});var h=b(w(),1);var P=h.default;/*!
|
|
2
|
+
* activity-streams
|
|
3
|
+
* https://github.com/silverbucket/activity-streams
|
|
4
|
+
*
|
|
5
|
+
* Developed and Maintained by:
|
|
6
|
+
* Nick Jennings <nick@silverbucket.net>
|
|
7
|
+
*
|
|
8
|
+
* activity-streams is released under the MIT (see LICENSE).
|
|
9
|
+
*
|
|
10
|
+
* You don't have to do anything special to choose one license or the other
|
|
11
|
+
* and you don't have to notify anyone which license you are using.
|
|
12
|
+
* Please see the corresponding license file for details of these licenses.
|
|
13
|
+
* You are free to use, modify and distribute this software, but all copyright
|
|
14
|
+
* information must remain.
|
|
15
|
+
*
|
|
16
|
+
*/var F=new P,q={stream:["id","type","actor","target","object","context","context","published","error"],object:["id","type","context","alias","attachedTo","attachment","attributedTo","attributedWith","condition","content","contentMap","context","contextOf","name","endTime","generator","generatorOf","group","icon","image","inReplyTo","members","memberOf","message","location","locationOf","objectOf","originOf","presence","preview","previewOf","provider","providerOf","published","rating","relationship","resultOf","replies","role","scope","scopeOf","startTime","status","summary","topic","tag","tagOf","targetOf","title","titleMap","updated","url","xmpp:stanza-id"]},f={"@id":"id","@type":"type",verb:"type",displayName:"name",objectType:"type",platform:"context"},u={actor:{primary:"id",props:q},target:{primary:"id",props:q},object:{primary:"content",props:q}},C=new Map,L={},V=!1,A=!0,k=[];function l(B,z){if(L[B]instanceof Object){if(L[B].includes(z))return!0}return!1}function v(B,z){return B[f[z]]=B[z],delete B[z],B}function S(B,z,D=!1){if(z===null)throw Error(`ActivityStreams validation failed: the "${B}" property is null. Example: { id: "user@example.com", type: "person" }`);if(z===void 0)throw Error(`ActivityStreams validation failed: the "${B}" property is undefined. Example: { id: "user@example.com", type: "person" }`);if(typeof z==="string")throw Error(`ActivityStreams validation failed: the "${B}" property received string "${z}" but expected an object. Use: { id: "${z}", type: "person" }`);if(typeof z!=="object"||Array.isArray(z)){let M=Array.isArray(z)?"array":typeof z,J=String(z);throw Error(`ActivityStreams validation failed: the "${B}" property must be an object, received ${M} (${J}). Example: { id: "user@example.com", type: "person" }`)}if(D&&!z.id)throw Error(`ActivityStreams validation failed: the "${B}" property requires an 'id' property. Example: { id: "user@example.com", type: "person" }`);let Q=Object.keys(z).filter((M)=>{return!q[B].includes(M)});for(let M of Q){let J=z;if(f[M]){J=v(J,M);continue}if(l(J.type,M))continue;if(!k.includes(J.type)){console.log(J);let Y=typeof J[M]==="string"?`"${J[M]}"`:String(J[M]),H=`ActivityStreams validation failed: property "${M}" with value ${Y} is not allowed on the "${B}" object of type "${J.type}".`;if(V)throw Error(H);if(A)console.warn(H)}}}function d(B){return B}function m(B){let z={};for(let D of Object.keys(B))if(typeof B[D]==="string")z[D]=C.get(B[D])||B[D];else if(Array.isArray(B[D])){z[D]=[];for(let G of B[D])if(typeof G==="string")z[D].push(C.get(G)||G)}else z[D]=B[D];for(let D of Object.keys(u))if(typeof z[D]==="string"){let G=u[D].primary,Q={};Q[G]=z[D],z[D]=Q}return z}function o(B){if(S("stream",B),typeof B.object==="object")S("object",B.object);let z=m(B);return F.emit("activity-stream",z),z}var a={create:(B)=>{S("object",B,!0);let z=d(B);return C.set(z.id,z),F.emit("activity-object-create",z),z},delete:(B)=>{let z=C.delete(B);if(z)F.emit("activity-object-delete",B);return z},get:(B,z)=>{let D=C.get(B);if(!D){if(!z)return B;D={id:B}}return d(D)},list:()=>C.keys()};function r(B={}){k=B?.specialObjs||[],V=typeof B.failOnUnknownObjectProperties==="boolean"?B.failOnUnknownObjectProperties:V,A=typeof B.warnOnUnknownObjectProperties==="boolean"?B.warnOnUnknownObjectProperties:A;for(let z of Object.keys(B.customProps||{}))if(typeof B.customProps[z]==="object")L[z]=B.customProps[z];return{Stream:o,Object:a,on:(z,D)=>F.on(z,D),once:(z,D)=>F.once(z,D),off:(z,D)=>F.off(z,D)}}((B)=>{B.ASFactor=r})(typeof window==="object"?window:{});export{r as ASFactory};
|
|
17
|
+
|
|
18
|
+
//# debugId=18C67BBDFA85BE7B64756E2164756E21
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vbm9kZV9tb2R1bGVzL2V2ZW50ZW1pdHRlcjMvaW5kZXguanMiLCAiLi4vLi4vbm9kZV9tb2R1bGVzL2V2ZW50ZW1pdHRlcjMvaW5kZXgubWpzIiwgInNyYy9hY3Rpdml0eS1zdHJlYW1zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlcbiAgLCBwcmVmaXggPSAnfic7XG5cbi8qKlxuICogQ29uc3RydWN0b3IgdG8gY3JlYXRlIGEgc3RvcmFnZSBmb3Igb3VyIGBFRWAgb2JqZWN0cy5cbiAqIEFuIGBFdmVudHNgIGluc3RhbmNlIGlzIGEgcGxhaW4gb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgYXJlIGV2ZW50IG5hbWVzLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gRXZlbnRzKCkge31cblxuLy9cbi8vIFdlIHRyeSB0byBub3QgaW5oZXJpdCBmcm9tIGBPYmplY3QucHJvdG90eXBlYC4gSW4gc29tZSBlbmdpbmVzIGNyZWF0aW5nIGFuXG4vLyBpbnN0YW5jZSBpbiB0aGlzIHdheSBpcyBmYXN0ZXIgdGhhbiBjYWxsaW5nIGBPYmplY3QuY3JlYXRlKG51bGwpYCBkaXJlY3RseS5cbi8vIElmIGBPYmplY3QuY3JlYXRlKG51bGwpYCBpcyBub3Qgc3VwcG9ydGVkIHdlIHByZWZpeCB0aGUgZXZlbnQgbmFtZXMgd2l0aCBhXG4vLyBjaGFyYWN0ZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGJ1aWx0LWluIG9iamVjdCBwcm9wZXJ0aWVzIGFyZSBub3Rcbi8vIG92ZXJyaWRkZW4gb3IgdXNlZCBhcyBhbiBhdHRhY2sgdmVjdG9yLlxuLy9cbmlmIChPYmplY3QuY3JlYXRlKSB7XG4gIEV2ZW50cy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vXG4gIC8vIFRoaXMgaGFjayBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYF9fcHJvdG9fX2AgcHJvcGVydHkgaXMgc3RpbGwgaW5oZXJpdGVkIGluXG4gIC8vIHNvbWUgb2xkIGJyb3dzZXJzIGxpa2UgQW5kcm9pZCA0LCBpUGhvbmUgNS4xLCBPcGVyYSAxMSBhbmQgU2FmYXJpIDUuXG4gIC8vXG4gIGlmICghbmV3IEV2ZW50cygpLl9fcHJvdG9fXykgcHJlZml4ID0gZmFsc2U7XG59XG5cbi8qKlxuICogUmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgZXZlbnQgbGlzdGVuZXIuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IFRoZSBjb250ZXh0IHRvIGludm9rZSB0aGUgbGlzdGVuZXIgd2l0aC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29uY2U9ZmFsc2VdIFNwZWNpZnkgaWYgdGhlIGxpc3RlbmVyIGlzIGEgb25lLXRpbWUgbGlzdGVuZXIuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIEVFKGZuLCBjb250ZXh0LCBvbmNlKSB7XG4gIHRoaXMuZm4gPSBmbjtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5vbmNlID0gb25jZSB8fCBmYWxzZTtcbn1cblxuLyoqXG4gKiBBZGQgYSBsaXN0ZW5lciBmb3IgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBAcGFyYW0ge0V2ZW50RW1pdHRlcn0gZW1pdHRlciBSZWZlcmVuY2UgdG8gdGhlIGBFdmVudEVtaXR0ZXJgIGluc3RhbmNlLlxuICogQHBhcmFtIHsoU3RyaW5nfFN5bWJvbCl9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IFRoZSBjb250ZXh0IHRvIGludm9rZSB0aGUgbGlzdGVuZXIgd2l0aC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gb25jZSBTcGVjaWZ5IGlmIHRoZSBsaXN0ZW5lciBpcyBhIG9uZS10aW1lIGxpc3RlbmVyLlxuICogQHJldHVybnMge0V2ZW50RW1pdHRlcn1cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGFkZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbiwgY29udGV4dCwgb25jZSkge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVyID0gbmV3IEVFKGZuLCBjb250ZXh0IHx8IGVtaXR0ZXIsIG9uY2UpXG4gICAgLCBldnQgPSBwcmVmaXggPyBwcmVmaXggKyBldmVudCA6IGV2ZW50O1xuXG4gIGlmICghZW1pdHRlci5fZXZlbnRzW2V2dF0pIGVtaXR0ZXIuX2V2ZW50c1tldnRdID0gbGlzdGVuZXIsIGVtaXR0ZXIuX2V2ZW50c0NvdW50Kys7XG4gIGVsc2UgaWYgKCFlbWl0dGVyLl9ldmVudHNbZXZ0XS5mbikgZW1pdHRlci5fZXZlbnRzW2V2dF0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2UgZW1pdHRlci5fZXZlbnRzW2V2dF0gPSBbZW1pdHRlci5fZXZlbnRzW2V2dF0sIGxpc3RlbmVyXTtcblxuICByZXR1cm4gZW1pdHRlcjtcbn1cblxuLyoqXG4gKiBDbGVhciBldmVudCBieSBuYW1lLlxuICpcbiAqIEBwYXJhbSB7RXZlbnRFbWl0dGVyfSBlbWl0dGVyIFJlZmVyZW5jZSB0byB0aGUgYEV2ZW50RW1pdHRlcmAgaW5zdGFuY2UuXG4gKiBAcGFyYW0geyhTdHJpbmd8U3ltYm9sKX0gZXZ0IFRoZSBFdmVudCBuYW1lLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2xlYXJFdmVudChlbWl0dGVyLCBldnQpIHtcbiAgaWYgKC0tZW1pdHRlci5fZXZlbnRzQ291bnQgPT09IDApIGVtaXR0ZXIuX2V2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgZWxzZSBkZWxldGUgZW1pdHRlci5fZXZlbnRzW2V2dF07XG59XG5cbi8qKlxuICogTWluaW1hbCBgRXZlbnRFbWl0dGVyYCBpbnRlcmZhY2UgdGhhdCBpcyBtb2xkZWQgYWdhaW5zdCB0aGUgTm9kZS5qc1xuICogYEV2ZW50RW1pdHRlcmAgaW50ZXJmYWNlLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICovXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIHRoaXMuX2V2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xufVxuXG4vKipcbiAqIFJldHVybiBhbiBhcnJheSBsaXN0aW5nIHRoZSBldmVudHMgZm9yIHdoaWNoIHRoZSBlbWl0dGVyIGhhcyByZWdpc3RlcmVkXG4gKiBsaXN0ZW5lcnMuXG4gKlxuICogQHJldHVybnMge0FycmF5fVxuICogQHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICB2YXIgbmFtZXMgPSBbXVxuICAgICwgZXZlbnRzXG4gICAgLCBuYW1lO1xuXG4gIGlmICh0aGlzLl9ldmVudHNDb3VudCA9PT0gMCkgcmV0dXJuIG5hbWVzO1xuXG4gIGZvciAobmFtZSBpbiAoZXZlbnRzID0gdGhpcy5fZXZlbnRzKSkge1xuICAgIGlmIChoYXMuY2FsbChldmVudHMsIG5hbWUpKSBuYW1lcy5wdXNoKHByZWZpeCA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lKTtcbiAgfVxuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgcmV0dXJuIG5hbWVzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGV2ZW50cykpO1xuICB9XG5cbiAgcmV0dXJuIG5hbWVzO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3RlbmVycyByZWdpc3RlcmVkIGZvciBhIGdpdmVuIGV2ZW50LlxuICpcbiAqIEBwYXJhbSB7KFN0cmluZ3xTeW1ib2wpfSBldmVudCBUaGUgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIHJlZ2lzdGVyZWQgbGlzdGVuZXJzLlxuICogQHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyhldmVudCkge1xuICB2YXIgZXZ0ID0gcHJlZml4ID8gcHJlZml4ICsgZXZlbnQgOiBldmVudFxuICAgICwgaGFuZGxlcnMgPSB0aGlzLl9ldmVudHNbZXZ0XTtcblxuICBpZiAoIWhhbmRsZXJzKSByZXR1cm4gW107XG4gIGlmIChoYW5kbGVycy5mbikgcmV0dXJuIFtoYW5kbGVycy5mbl07XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBoYW5kbGVycy5sZW5ndGgsIGVlID0gbmV3IEFycmF5KGwpOyBpIDwgbDsgaSsrKSB7XG4gICAgZWVbaV0gPSBoYW5kbGVyc1tpXS5mbjtcbiAgfVxuXG4gIHJldHVybiBlZTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBudW1iZXIgb2YgbGlzdGVuZXJzIGxpc3RlbmluZyB0byBhIGdpdmVuIGV2ZW50LlxuICpcbiAqIEBwYXJhbSB7KFN0cmluZ3xTeW1ib2wpfSBldmVudCBUaGUgZXZlbnQgbmFtZS5cbiAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBudW1iZXIgb2YgbGlzdGVuZXJzLlxuICogQHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiBsaXN0ZW5lckNvdW50KGV2ZW50KSB7XG4gIHZhciBldnQgPSBwcmVmaXggPyBwcmVmaXggKyBldmVudCA6IGV2ZW50XG4gICAgLCBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbZXZ0XTtcblxuICBpZiAoIWxpc3RlbmVycykgcmV0dXJuIDA7XG4gIGlmIChsaXN0ZW5lcnMuZm4pIHJldHVybiAxO1xuICByZXR1cm4gbGlzdGVuZXJzLmxlbmd0aDtcbn07XG5cbi8qKlxuICogQ2FsbHMgZWFjaCBvZiB0aGUgbGlzdGVuZXJzIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogQHBhcmFtIHsoU3RyaW5nfFN5bWJvbCl9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHJldHVybnMge0Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgZXZlbnQgaGFkIGxpc3RlbmVycywgZWxzZSBgZmFsc2VgLlxuICogQHB1YmxpY1xuICovXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KGV2ZW50LCBhMSwgYTIsIGEzLCBhNCwgYTUpIHtcbiAgdmFyIGV2dCA9IHByZWZpeCA/IHByZWZpeCArIGV2ZW50IDogZXZlbnQ7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHNbZXZ0XSkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbZXZ0XVxuICAgICwgbGVuID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgYXJnc1xuICAgICwgaTtcblxuICBpZiAobGlzdGVuZXJzLmZuKSB7XG4gICAgaWYgKGxpc3RlbmVycy5vbmNlKSB0aGlzLnJlbW92ZUxpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcnMuZm4sIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICBzd2l0Y2ggKGxlbikge1xuICAgICAgY2FzZSAxOiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQpLCB0cnVlO1xuICAgICAgY2FzZSAyOiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQsIGExKSwgdHJ1ZTtcbiAgICAgIGNhc2UgMzogcmV0dXJuIGxpc3RlbmVycy5mbi5jYWxsKGxpc3RlbmVycy5jb250ZXh0LCBhMSwgYTIpLCB0cnVlO1xuICAgICAgY2FzZSA0OiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQsIGExLCBhMiwgYTMpLCB0cnVlO1xuICAgICAgY2FzZSA1OiByZXR1cm4gbGlzdGVuZXJzLmZuLmNhbGwobGlzdGVuZXJzLmNvbnRleHQsIGExLCBhMiwgYTMsIGE0KSwgdHJ1ZTtcbiAgICAgIGNhc2UgNjogcmV0dXJuIGxpc3RlbmVycy5mbi5jYWxsKGxpc3RlbmVycy5jb250ZXh0LCBhMSwgYTIsIGEzLCBhNCwgYTUpLCB0cnVlO1xuICAgIH1cblxuICAgIGZvciAoaSA9IDEsIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0xKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMuZm4uYXBwbHkobGlzdGVuZXJzLmNvbnRleHQsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW5ndGggPSBsaXN0ZW5lcnMubGVuZ3RoXG4gICAgICAsIGo7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChsaXN0ZW5lcnNbaV0ub25jZSkgdGhpcy5yZW1vdmVMaXN0ZW5lcihldmVudCwgbGlzdGVuZXJzW2ldLmZuLCB1bmRlZmluZWQsIHRydWUpO1xuXG4gICAgICBzd2l0Y2ggKGxlbikge1xuICAgICAgICBjYXNlIDE6IGxpc3RlbmVyc1tpXS5mbi5jYWxsKGxpc3RlbmVyc1tpXS5jb250ZXh0KTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMjogbGlzdGVuZXJzW2ldLmZuLmNhbGwobGlzdGVuZXJzW2ldLmNvbnRleHQsIGExKTsgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogbGlzdGVuZXJzW2ldLmZuLmNhbGwobGlzdGVuZXJzW2ldLmNvbnRleHQsIGExLCBhMik7IGJyZWFrO1xuICAgICAgICBjYXNlIDQ6IGxpc3RlbmVyc1tpXS5mbi5jYWxsKGxpc3RlbmVyc1tpXS5jb250ZXh0LCBhMSwgYTIsIGEzKTsgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKCFhcmdzKSBmb3IgKGogPSAxLCBhcmdzID0gbmV3IEFycmF5KGxlbiAtMSk7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgYXJnc1tqIC0gMV0gPSBhcmd1bWVudHNbal07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGlzdGVuZXJzW2ldLmZuLmFwcGx5KGxpc3RlbmVyc1tpXS5jb250ZXh0LCBhcmdzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogQWRkIGEgbGlzdGVuZXIgZm9yIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogQHBhcmFtIHsoU3RyaW5nfFN5bWJvbCl9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGxpc3RlbmVyIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBbY29udGV4dD10aGlzXSBUaGUgY29udGV4dCB0byBpbnZva2UgdGhlIGxpc3RlbmVyIHdpdGguXG4gKiBAcmV0dXJucyB7RXZlbnRFbWl0dGVyfSBgdGhpc2AuXG4gKiBAcHVibGljXG4gKi9cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBmdW5jdGlvbiBvbihldmVudCwgZm4sIGNvbnRleHQpIHtcbiAgcmV0dXJuIGFkZExpc3RlbmVyKHRoaXMsIGV2ZW50LCBmbiwgY29udGV4dCwgZmFsc2UpO1xufTtcblxuLyoqXG4gKiBBZGQgYSBvbmUtdGltZSBsaXN0ZW5lciBmb3IgYSBnaXZlbiBldmVudC5cbiAqXG4gKiBAcGFyYW0geyhTdHJpbmd8U3ltYm9sKX0gZXZlbnQgVGhlIGV2ZW50IG5hbWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgbGlzdGVuZXIgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IFtjb250ZXh0PXRoaXNdIFRoZSBjb250ZXh0IHRvIGludm9rZSB0aGUgbGlzdGVuZXIgd2l0aC5cbiAqIEByZXR1cm5zIHtFdmVudEVtaXR0ZXJ9IGB0aGlzYC5cbiAqIEBwdWJsaWNcbiAqL1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZShldmVudCwgZm4sIGNvbnRleHQpIHtcbiAgcmV0dXJuIGFkZExpc3RlbmVyKHRoaXMsIGV2ZW50LCBmbiwgY29udGV4dCwgdHJ1ZSk7XG59O1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgbGlzdGVuZXJzIG9mIGEgZ2l2ZW4gZXZlbnQuXG4gKlxuICogQHBhcmFtIHsoU3RyaW5nfFN5bWJvbCl9IGV2ZW50IFRoZSBldmVudCBuYW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gT25seSByZW1vdmUgdGhlIGxpc3RlbmVycyB0aGF0IG1hdGNoIHRoaXMgZnVuY3Rpb24uXG4gKiBAcGFyYW0geyp9IGNvbnRleHQgT25seSByZW1vdmUgdGhlIGxpc3RlbmVycyB0aGF0IGhhdmUgdGhpcyBjb250ZXh0LlxuICogQHBhcmFtIHtCb29sZWFufSBvbmNlIE9ubHkgcmVtb3ZlIG9uZS10aW1lIGxpc3RlbmVycy5cbiAqIEByZXR1cm5zIHtFdmVudEVtaXR0ZXJ9IGB0aGlzYC5cbiAqIEBwdWJsaWNcbiAqL1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGV2ZW50LCBmbiwgY29udGV4dCwgb25jZSkge1xuICB2YXIgZXZ0ID0gcHJlZml4ID8gcHJlZml4ICsgZXZlbnQgOiBldmVudDtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1tldnRdKSByZXR1cm4gdGhpcztcbiAgaWYgKCFmbikge1xuICAgIGNsZWFyRXZlbnQodGhpcywgZXZ0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbZXZ0XTtcblxuICBpZiAobGlzdGVuZXJzLmZuKSB7XG4gICAgaWYgKFxuICAgICAgbGlzdGVuZXJzLmZuID09PSBmbiAmJlxuICAgICAgKCFvbmNlIHx8IGxpc3RlbmVycy5vbmNlKSAmJlxuICAgICAgKCFjb250ZXh0IHx8IGxpc3RlbmVycy5jb250ZXh0ID09PSBjb250ZXh0KVxuICAgICkge1xuICAgICAgY2xlYXJFdmVudCh0aGlzLCBldnQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMCwgZXZlbnRzID0gW10sIGxlbmd0aCA9IGxpc3RlbmVycy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICBsaXN0ZW5lcnNbaV0uZm4gIT09IGZuIHx8XG4gICAgICAgIChvbmNlICYmICFsaXN0ZW5lcnNbaV0ub25jZSkgfHxcbiAgICAgICAgKGNvbnRleHQgJiYgbGlzdGVuZXJzW2ldLmNvbnRleHQgIT09IGNvbnRleHQpXG4gICAgICApIHtcbiAgICAgICAgZXZlbnRzLnB1c2gobGlzdGVuZXJzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIFJlc2V0IHRoZSBhcnJheSwgb3IgcmVtb3ZlIGl0IGNvbXBsZXRlbHkgaWYgd2UgaGF2ZSBubyBtb3JlIGxpc3RlbmVycy5cbiAgICAvL1xuICAgIGlmIChldmVudHMubGVuZ3RoKSB0aGlzLl9ldmVudHNbZXZ0XSA9IGV2ZW50cy5sZW5ndGggPT09IDEgPyBldmVudHNbMF0gOiBldmVudHM7XG4gICAgZWxzZSBjbGVhckV2ZW50KHRoaXMsIGV2dCk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFsbCBsaXN0ZW5lcnMsIG9yIHRob3NlIG9mIHRoZSBzcGVjaWZpZWQgZXZlbnQuXG4gKlxuICogQHBhcmFtIHsoU3RyaW5nfFN5bWJvbCl9IFtldmVudF0gVGhlIGV2ZW50IG5hbWUuXG4gKiBAcmV0dXJucyB7RXZlbnRFbWl0dGVyfSBgdGhpc2AuXG4gKiBAcHVibGljXG4gKi9cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKGV2ZW50KSB7XG4gIHZhciBldnQ7XG5cbiAgaWYgKGV2ZW50KSB7XG4gICAgZXZ0ID0gcHJlZml4ID8gcHJlZml4ICsgZXZlbnQgOiBldmVudDtcbiAgICBpZiAodGhpcy5fZXZlbnRzW2V2dF0pIGNsZWFyRXZlbnQodGhpcywgZXZ0KTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRzKCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gQWxpYXMgbWV0aG9kcyBuYW1lcyBiZWNhdXNlIHBlb3BsZSByb2xsIGxpa2UgdGhhdC5cbi8vXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbjtcblxuLy9cbi8vIEV4cG9zZSB0aGUgcHJlZml4LlxuLy9cbkV2ZW50RW1pdHRlci5wcmVmaXhlZCA9IHByZWZpeDtcblxuLy9cbi8vIEFsbG93IGBFdmVudEVtaXR0ZXJgIHRvIGJlIGltcG9ydGVkIGFzIG1vZHVsZSBuYW1lc3BhY2UuXG4vL1xuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuLy9cbi8vIEV4cG9zZSB0aGUgbW9kdWxlLlxuLy9cbmlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIG1vZHVsZSkge1xuICBtb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcbn1cbiIsCiAgICAiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICcuL2luZGV4LmpzJ1xuXG5leHBvcnQgeyBFdmVudEVtaXR0ZXIgfVxuZXhwb3J0IGRlZmF1bHQgRXZlbnRFbWl0dGVyXG4iLAogICAgIi8qIVxuICogYWN0aXZpdHktc3RyZWFtc1xuICogICBodHRwczovL2dpdGh1Yi5jb20vc2lsdmVyYnVja2V0L2FjdGl2aXR5LXN0cmVhbXNcbiAqXG4gKiBEZXZlbG9wZWQgYW5kIE1haW50YWluZWQgYnk6XG4gKiAgIE5pY2sgSmVubmluZ3MgPG5pY2tAc2lsdmVyYnVja2V0Lm5ldD5cbiAqXG4gKiBhY3Rpdml0eS1zdHJlYW1zIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgKHNlZSBMSUNFTlNFKS5cbiAqXG4gKiBZb3UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsIHRvIGNob29zZSBvbmUgbGljZW5zZSBvciB0aGUgb3RoZXJcbiAqIGFuZCB5b3UgZG9uJ3QgaGF2ZSB0byBub3RpZnkgYW55b25lIHdoaWNoIGxpY2Vuc2UgeW91IGFyZSB1c2luZy5cbiAqIFBsZWFzZSBzZWUgdGhlIGNvcnJlc3BvbmRpbmcgbGljZW5zZSBmaWxlIGZvciBkZXRhaWxzIG9mIHRoZXNlIGxpY2Vuc2VzLlxuICogWW91IGFyZSBmcmVlIHRvIHVzZSwgbW9kaWZ5IGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUsIGJ1dCBhbGwgY29weXJpZ2h0XG4gKiBpbmZvcm1hdGlvbiBtdXN0IHJlbWFpbi5cbiAqXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBY3Rpdml0eU9iamVjdCwgQWN0aXZpdHlTdHJlYW0gfSBmcm9tIFwiQHNvY2tldGh1Yi9zY2hlbWFzXCI7XG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudGVtaXR0ZXIzXCI7XG5cbmNvbnN0IGVlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuY29uc3QgYmFzZVByb3BzID0ge1xuICAgIHN0cmVhbTogW1xuICAgICAgICBcImlkXCIsXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcImFjdG9yXCIsXG4gICAgICAgIFwidGFyZ2V0XCIsXG4gICAgICAgIFwib2JqZWN0XCIsXG4gICAgICAgIFwiY29udGV4dFwiLFxuICAgICAgICBcImNvbnRleHRcIixcbiAgICAgICAgXCJwdWJsaXNoZWRcIixcbiAgICAgICAgXCJlcnJvclwiLFxuICAgIF0sXG4gICAgb2JqZWN0OiBbXG4gICAgICAgIFwiaWRcIixcbiAgICAgICAgXCJ0eXBlXCIsXG4gICAgICAgIFwiY29udGV4dFwiLFxuICAgICAgICBcImFsaWFzXCIsXG4gICAgICAgIFwiYXR0YWNoZWRUb1wiLFxuICAgICAgICBcImF0dGFjaG1lbnRcIixcbiAgICAgICAgXCJhdHRyaWJ1dGVkVG9cIixcbiAgICAgICAgXCJhdHRyaWJ1dGVkV2l0aFwiLFxuICAgICAgICBcImNvbmRpdGlvblwiLFxuICAgICAgICBcImNvbnRlbnRcIixcbiAgICAgICAgXCJjb250ZW50TWFwXCIsXG4gICAgICAgIFwiY29udGV4dFwiLFxuICAgICAgICBcImNvbnRleHRPZlwiLFxuICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgXCJlbmRUaW1lXCIsXG4gICAgICAgIFwiZ2VuZXJhdG9yXCIsXG4gICAgICAgIFwiZ2VuZXJhdG9yT2ZcIixcbiAgICAgICAgXCJncm91cFwiLFxuICAgICAgICBcImljb25cIixcbiAgICAgICAgXCJpbWFnZVwiLFxuICAgICAgICBcImluUmVwbHlUb1wiLFxuICAgICAgICBcIm1lbWJlcnNcIixcbiAgICAgICAgXCJtZW1iZXJPZlwiLFxuICAgICAgICBcIm1lc3NhZ2VcIixcbiAgICAgICAgXCJsb2NhdGlvblwiLFxuICAgICAgICBcImxvY2F0aW9uT2ZcIixcbiAgICAgICAgXCJvYmplY3RPZlwiLFxuICAgICAgICBcIm9yaWdpbk9mXCIsXG4gICAgICAgIFwicHJlc2VuY2VcIixcbiAgICAgICAgXCJwcmV2aWV3XCIsXG4gICAgICAgIFwicHJldmlld09mXCIsXG4gICAgICAgIFwicHJvdmlkZXJcIixcbiAgICAgICAgXCJwcm92aWRlck9mXCIsXG4gICAgICAgIFwicHVibGlzaGVkXCIsXG4gICAgICAgIFwicmF0aW5nXCIsXG4gICAgICAgIFwicmVsYXRpb25zaGlwXCIsXG4gICAgICAgIFwicmVzdWx0T2ZcIixcbiAgICAgICAgXCJyZXBsaWVzXCIsXG4gICAgICAgIFwicm9sZVwiLFxuICAgICAgICBcInNjb3BlXCIsXG4gICAgICAgIFwic2NvcGVPZlwiLFxuICAgICAgICBcInN0YXJ0VGltZVwiLFxuICAgICAgICBcInN0YXR1c1wiLFxuICAgICAgICBcInN1bW1hcnlcIixcbiAgICAgICAgXCJ0b3BpY1wiLFxuICAgICAgICBcInRhZ1wiLFxuICAgICAgICBcInRhZ09mXCIsXG4gICAgICAgIFwidGFyZ2V0T2ZcIixcbiAgICAgICAgXCJ0aXRsZVwiLFxuICAgICAgICBcInRpdGxlTWFwXCIsXG4gICAgICAgIFwidXBkYXRlZFwiLFxuICAgICAgICBcInVybFwiLFxuICAgICAgICBcInhtcHA6c3RhbnphLWlkXCIsXG4gICAgXSxcbn07XG5jb25zdCByZW5hbWUgPSB7XG4gICAgXCJAaWRcIjogXCJpZFwiLFxuICAgIFwiQHR5cGVcIjogXCJ0eXBlXCIsXG4gICAgdmVyYjogXCJ0eXBlXCIsXG4gICAgZGlzcGxheU5hbWU6IFwibmFtZVwiLFxuICAgIG9iamVjdFR5cGU6IFwidHlwZVwiLFxuICAgIHBsYXRmb3JtOiBcImNvbnRleHRcIixcbn07XG5jb25zdCBleHBhbmQgPSB7XG4gICAgYWN0b3I6IHtcbiAgICAgICAgcHJpbWFyeTogXCJpZFwiLFxuICAgICAgICBwcm9wczogYmFzZVByb3BzLFxuICAgIH0sXG4gICAgdGFyZ2V0OiB7XG4gICAgICAgIHByaW1hcnk6IFwiaWRcIixcbiAgICAgICAgcHJvcHM6IGJhc2VQcm9wcyxcbiAgICB9LFxuICAgIG9iamVjdDoge1xuICAgICAgICBwcmltYXJ5OiBcImNvbnRlbnRcIixcbiAgICAgICAgcHJvcHM6IGJhc2VQcm9wcyxcbiAgICB9LFxufTtcblxudHlwZSBDdXN0b21Qcm9wcyA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgc3RyaW5nW107XG59O1xuXG5jb25zdCBvYmpzID0gbmV3IE1hcCgpO1xuY29uc3QgY3VzdG9tUHJvcHM6IEN1c3RvbVByb3BzID0ge307XG5cbmxldCBmYWlsT25Vbmtub3duT2JqZWN0UHJvcGVydGllcyA9IGZhbHNlO1xubGV0IHdhcm5PblVua25vd25PYmplY3RQcm9wZXJ0aWVzID0gdHJ1ZTtcbmxldCBzcGVjaWFsT2JqcyA9IFtdOyAvLyB0aGUgb2JqZWN0cyBkb24ndCBnZXQgcmVqZWN0ZWQgZm9yIGJhZCBwcm9wc1xuXG5mdW5jdGlvbiBtYXRjaGVzQ3VzdG9tUHJvcCh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGN1c3RvbVByb3BzW3R5cGVdIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IGN1c3RvbVByb3BzW3R5cGVdIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAob2JqLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVuYW1lUHJvcDxUPihvYmo6IFQsIGtleTogc3RyaW5nKTogVCB7XG4gICAgb2JqW3JlbmFtZVtrZXldXSA9IG9ialtrZXldO1xuICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU9iamVjdDxUPih0eXBlOiBzdHJpbmcsIGluY29taW5nT2JqOiBULCByZXF1aXJlSWQgPSBmYWxzZSkge1xuICAgIC8vIElucHV0IHZhbGlkYXRpb24gd2l0aCBjbGVhciBlcnJvciBtZXNzYWdlc1xuICAgIGlmIChpbmNvbWluZ09iaiA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQWN0aXZpdHlTdHJlYW1zIHZhbGlkYXRpb24gZmFpbGVkOiB0aGUgXCIke3R5cGV9XCIgcHJvcGVydHkgaXMgbnVsbC4gRXhhbXBsZTogeyBpZDogXCJ1c2VyQGV4YW1wbGUuY29tXCIsIHR5cGU6IFwicGVyc29uXCIgfWAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGluY29taW5nT2JqID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEFjdGl2aXR5U3RyZWFtcyB2YWxpZGF0aW9uIGZhaWxlZDogdGhlIFwiJHt0eXBlfVwiIHByb3BlcnR5IGlzIHVuZGVmaW5lZC4gRXhhbXBsZTogeyBpZDogXCJ1c2VyQGV4YW1wbGUuY29tXCIsIHR5cGU6IFwicGVyc29uXCIgfWAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbmNvbWluZ09iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQWN0aXZpdHlTdHJlYW1zIHZhbGlkYXRpb24gZmFpbGVkOiB0aGUgXCIke3R5cGV9XCIgcHJvcGVydHkgcmVjZWl2ZWQgc3RyaW5nIFwiJHtpbmNvbWluZ09ian1cIiBidXQgZXhwZWN0ZWQgYW4gb2JqZWN0LiBVc2U6IHsgaWQ6IFwiJHtpbmNvbWluZ09ian1cIiwgdHlwZTogXCJwZXJzb25cIiB9YCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluY29taW5nT2JqICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoaW5jb21pbmdPYmopKSB7XG4gICAgICAgIGNvbnN0IHJlY2VpdmVkVHlwZSA9IEFycmF5LmlzQXJyYXkoaW5jb21pbmdPYmopXG4gICAgICAgICAgICA/IFwiYXJyYXlcIlxuICAgICAgICAgICAgOiB0eXBlb2YgaW5jb21pbmdPYmo7XG4gICAgICAgIGNvbnN0IHJlY2VpdmVkVmFsdWUgPSBTdHJpbmcoaW5jb21pbmdPYmopO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQWN0aXZpdHlTdHJlYW1zIHZhbGlkYXRpb24gZmFpbGVkOiB0aGUgXCIke3R5cGV9XCIgcHJvcGVydHkgbXVzdCBiZSBhbiBvYmplY3QsIHJlY2VpdmVkICR7cmVjZWl2ZWRUeXBlfSAoJHtyZWNlaXZlZFZhbHVlfSkuIEV4YW1wbGU6IHsgaWQ6IFwidXNlckBleGFtcGxlLmNvbVwiLCB0eXBlOiBcInBlcnNvblwiIH1gLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFJlcXVpcmUgJ2lkJyBwcm9wZXJ0eSB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkIChlLmcuLCBPYmplY3QuY3JlYXRlKCkpXG4gICAgY29uc3Qgb2JqID0gaW5jb21pbmdPYmogYXMgQWN0aXZpdHlPYmplY3Q7XG4gICAgaWYgKHJlcXVpcmVJZCAmJiAhb2JqLmlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBY3Rpdml0eVN0cmVhbXMgdmFsaWRhdGlvbiBmYWlsZWQ6IHRoZSBcIiR7dHlwZX1cIiBwcm9wZXJ0eSByZXF1aXJlcyBhbiAnaWQnIHByb3BlcnR5LiBFeGFtcGxlOiB7IGlkOiBcInVzZXJAZXhhbXBsZS5jb21cIiwgdHlwZTogXCJwZXJzb25cIiB9YCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1bmtub3duS2V5cyA9IE9iamVjdC5rZXlzKGluY29taW5nT2JqKS5maWx0ZXIoXG4gICAgICAgIChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFiYXNlUHJvcHNbdHlwZV0uaW5jbHVkZXMoa2V5KTtcbiAgICAgICAgfSxcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgdW5rbm93bktleXMpIHtcbiAgICAgICAgbGV0IGFvOiBBY3Rpdml0eU9iamVjdCA9IGluY29taW5nT2JqIGFzIEFjdGl2aXR5T2JqZWN0O1xuICAgICAgICBpZiAocmVuYW1lW2tleV0pIHtcbiAgICAgICAgICAgIC8vIHJlbmFtZSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGZhaWxcbiAgICAgICAgICAgIGFvID0gcmVuYW1lUHJvcChhbywga2V5KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZXNDdXN0b21Qcm9wKGFvLnR5cGUsIGtleSkpIHtcbiAgICAgICAgICAgIC8vIGN1c3RvbSBwcm9wZXJ0eSBtYXRjaGVzLCBjb250aW51ZVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNwZWNpYWxPYmpzLmluY2x1ZGVzKGFvLnR5cGUpKSB7XG4gICAgICAgICAgICAvLyBub3QgZGVmaW5lZCBhcyBhIHNwZWNpYWwgcHJvcFxuICAgICAgICAgICAgLy8gZG9uJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggaXQsIHNvIHRocm93IGVycm9yXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhhbyk7XG4gICAgICAgICAgICBjb25zdCByZWNlaXZlZFZhbHVlID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgYW9ba2V5XSA9PT0gXCJzdHJpbmdcIiA/IGBcIiR7YW9ba2V5XX1cImAgOiBTdHJpbmcoYW9ba2V5XSk7XG4gICAgICAgICAgICBjb25zdCBlcnIgPSBgQWN0aXZpdHlTdHJlYW1zIHZhbGlkYXRpb24gZmFpbGVkOiBwcm9wZXJ0eSBcIiR7a2V5fVwiIHdpdGggdmFsdWUgJHtyZWNlaXZlZFZhbHVlfSBpcyBub3QgYWxsb3dlZCBvbiB0aGUgXCIke3R5cGV9XCIgb2JqZWN0IG9mIHR5cGUgXCIke2FvLnR5cGV9XCIuYDtcbiAgICAgICAgICAgIGlmIChmYWlsT25Vbmtub3duT2JqZWN0UHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhcm5PblVua25vd25PYmplY3RQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuc3VyZVByb3BzKG9iajogQWN0aXZpdHlPYmplY3QpOiBBY3Rpdml0eU9iamVjdCB7XG4gICAgLy8gZW5zdXJlIHRoZSBuYW1lIHByb3BlcnR5LCB3aGljaCBjYW4gZ2VuZXJhbGx5IGJlIGluZmVycmVkIGZyb20gdGhlIGlkXG4gICAgLy8gbmFtZSA9IG9iai5tYXRjaCgvKD8oP1xcdyspOlxcL1xcLykoPzouK0ApPyguKz8pKD86XFwvfCQpLylbMV1cbiAgICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBleHBhbmRTdHJlYW0obWV0YTogQWN0aXZpdHlTdHJlYW0pIHtcbiAgICBjb25zdCBzdHJlYW0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXRhKSkge1xuICAgICAgICBpZiAodHlwZW9mIG1ldGFba2V5XSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgc3RyZWFtW2tleV0gPSBvYmpzLmdldChtZXRhW2tleV0pIHx8IG1ldGFba2V5XTtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1ldGFba2V5XSkpIHtcbiAgICAgICAgICAgIHN0cmVhbVtrZXldID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG1ldGFba2V5XSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyZWFtW2tleV0ucHVzaChvYmpzLmdldChlbnRyeSkgfHwgZW50cnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0cmVhbVtrZXldID0gbWV0YVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gb25seSBleHBhbmQgc3RyaW5nIGludG8gb2JqZWN0cyBpZiB0aGV5IGFyZSBpbiB0aGUgZXhwYW5kIGxpc3RcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhleHBhbmQpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3RyZWFtW2tleV0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGV4cGFuZFtrZXldLnByaW1hcnk7XG4gICAgICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgICAgIG9ialtpZHhdID0gc3RyZWFtW2tleV07XG4gICAgICAgICAgICBzdHJlYW1ba2V5XSA9IG9iajtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3RyZWFtO1xufVxuXG5mdW5jdGlvbiBTdHJlYW0oXG4gICAgbWV0YTogQWN0aXZpdHlTdHJlYW0sXG4pOiBBY3Rpdml0eVN0cmVhbSB8IEFjdGl2aXR5T2JqZWN0IHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+IHtcbiAgICB2YWxpZGF0ZU9iamVjdChcInN0cmVhbVwiLCBtZXRhKTtcbiAgICBpZiAodHlwZW9mIG1ldGEub2JqZWN0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHZhbGlkYXRlT2JqZWN0KFwib2JqZWN0XCIsIG1ldGEub2JqZWN0KTtcbiAgICB9XG4gICAgY29uc3Qgc3RyZWFtID0gZXhwYW5kU3RyZWFtKG1ldGEpO1xuICAgIGVlLmVtaXQoXCJhY3Rpdml0eS1zdHJlYW1cIiwgc3RyZWFtKTtcbiAgICByZXR1cm4gc3RyZWFtO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5T2JqZWN0TWFuYWdlciB7XG4gICAgY3JlYXRlKG9iajogdW5rbm93bik6IHVua25vd247XG4gICAgZGVsZXRlKGlkOiBzdHJpbmcpOiBib29sZWFuO1xuICAgIGxpc3QoKTogSXRlcmFibGVJdGVyYXRvcjx1bmtub3duPjtcbiAgICBnZXQoaWQ6IHN0cmluZywgZXhwYW5kPzogYm9vbGVhbik6IHVua25vd247XG59XG5cbmNvbnN0IF9PYmplY3Q6IEFjdGl2aXR5T2JqZWN0TWFuYWdlciA9IHtcbiAgICBjcmVhdGU6IChvYmo6IEFjdGl2aXR5T2JqZWN0KSA9PiB7XG4gICAgICAgIHZhbGlkYXRlT2JqZWN0KFwib2JqZWN0XCIsIG9iaiwgdHJ1ZSk7IC8vIHJlcXVpcmUgSUQgZm9yIE9iamVjdC5jcmVhdGUoKVxuICAgICAgICBjb25zdCBhbyA9IGVuc3VyZVByb3BzKG9iaik7XG4gICAgICAgIG9ianMuc2V0KGFvLmlkLCBhbyk7XG4gICAgICAgIGVlLmVtaXQoXCJhY3Rpdml0eS1vYmplY3QtY3JlYXRlXCIsIGFvKTtcbiAgICAgICAgcmV0dXJuIGFvO1xuICAgIH0sXG5cbiAgICBkZWxldGU6IChpZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBvYmpzLmRlbGV0ZShpZCk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGVlLmVtaXQoXCJhY3Rpdml0eS1vYmplY3QtZGVsZXRlXCIsIGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG5cbiAgICBnZXQ6IChpZCwgZXhwYW5kKSA9PiB7XG4gICAgICAgIGxldCBvYmogPSBvYmpzLmdldChpZCk7XG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICBpZiAoIWV4cGFuZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9iaiA9IHsgaWQ6IGlkIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVuc3VyZVByb3BzKG9iaik7XG4gICAgfSxcblxuICAgIGxpc3Q6ICgpOiBJdGVyYWJsZUl0ZXJhdG9yPHVua25vd24+ID0+IG9ianMua2V5cygpLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBBU0ZhY3RvcnlPcHRpb25zIHtcbiAgICBzcGVjaWFsT2Jqcz86IEFycmF5PHN0cmluZz47XG4gICAgZmFpbE9uVW5rbm93bk9iamVjdFByb3BlcnRpZXM/OiBib29sZWFuO1xuICAgIHdhcm5PblVua25vd25PYmplY3RQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbiAgICBjdXN0b21Qcm9wcz86IEN1c3RvbVByb3BzO1xufVxuXG50eXBlIEV2ZW50Q2FsbGJhY2sgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFTTWFuYWdlciB7XG4gICAgU3RyZWFtKG1ldGE6IHVua25vd24pOiBBY3Rpdml0eVN0cmVhbSB8IEFjdGl2aXR5T2JqZWN0O1xuICAgIE9iamVjdDogQWN0aXZpdHlPYmplY3RNYW5hZ2VyO1xuICAgIG9uKGV2ZW50OiBzdHJpbmcsIGZ1bmM6IEV2ZW50Q2FsbGJhY2spOiB2b2lkO1xuICAgIG9uY2UoZXZlbnQ6IHN0cmluZywgZnVuYzogRXZlbnRDYWxsYmFjayk6IHZvaWQ7XG4gICAgb2ZmKGV2ZW50OiBzdHJpbmcsIGZ1bmM6IEV2ZW50Q2FsbGJhY2spOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQVNGYWN0b3J5KG9wdHM6IEFTRmFjdG9yeU9wdGlvbnMgPSB7fSk6IEFTTWFuYWdlciB7XG4gICAgc3BlY2lhbE9ianMgPSBvcHRzPy5zcGVjaWFsT2JqcyB8fCBbXTtcbiAgICBmYWlsT25Vbmtub3duT2JqZWN0UHJvcGVydGllcyA9XG4gICAgICAgIHR5cGVvZiBvcHRzLmZhaWxPblVua25vd25PYmplY3RQcm9wZXJ0aWVzID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgPyBvcHRzLmZhaWxPblVua25vd25PYmplY3RQcm9wZXJ0aWVzXG4gICAgICAgICAgICA6IGZhaWxPblVua25vd25PYmplY3RQcm9wZXJ0aWVzO1xuICAgIHdhcm5PblVua25vd25PYmplY3RQcm9wZXJ0aWVzID1cbiAgICAgICAgdHlwZW9mIG9wdHMud2Fybk9uVW5rbm93bk9iamVjdFByb3BlcnRpZXMgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICA/IG9wdHMud2Fybk9uVW5rbm93bk9iamVjdFByb3BlcnRpZXNcbiAgICAgICAgICAgIDogd2Fybk9uVW5rbm93bk9iamVjdFByb3BlcnRpZXM7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhvcHRzLmN1c3RvbVByb3BzIHx8IHt9KSkge1xuICAgICAgICBpZiAodHlwZW9mIG9wdHMuY3VzdG9tUHJvcHNbcHJvcE5hbWVdID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBjdXN0b21Qcm9wc1twcm9wTmFtZV0gPSBvcHRzLmN1c3RvbVByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIFN0cmVhbTogU3RyZWFtLFxuICAgICAgICBPYmplY3Q6IF9PYmplY3QsXG4gICAgICAgIG9uOiAoZXZlbnQsIGZ1bmMpID0+IGVlLm9uKGV2ZW50LCBmdW5jKSxcbiAgICAgICAgb25jZTogKGV2ZW50LCBmdW5jKSA9PiBlZS5vbmNlKGV2ZW50LCBmdW5jKSxcbiAgICAgICAgb2ZmOiAoZXZlbnQsIGZ1bmNOYW1lKSA9PiBlZS5vZmYoZXZlbnQsIGZ1bmNOYW1lKSxcbiAgICB9IGFzIEFTTWFuYWdlcjtcbn1cblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiA8ZXhwbGFuYXRpb24+XG4oKGdsb2JhbDogYW55KSA9PiB7XG4gICAgZ2xvYmFsLkFTRmFjdG9yID0gQVNGYWN0b3J5O1xufSkodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIiA/IHdpbmRvdyA6IHt9KTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICJxWUFFQSxJQUFJLEVBQU0sT0FBTyxVQUFVLGVBQ3ZCLEVBQVMsSUFTYixTQUFTLENBQU0sRUFBRyxFQVNsQixHQUFJLE9BQU8sUUFPVCxHQU5BLEVBQU8sVUFBWSxPQUFPLE9BQU8sSUFBSSxFQU1qQyxDQUFDLElBQUksRUFBTyxFQUFFLFVBQVcsRUFBUyxHQVl4QyxTQUFTLENBQUUsQ0FBQyxFQUFJLEVBQVMsRUFBTSxDQUM3QixLQUFLLEdBQUssRUFDVixLQUFLLFFBQVUsRUFDZixLQUFLLEtBQU8sR0FBUSxHQWN0QixTQUFTLENBQVcsQ0FBQyxFQUFTLEVBQU8sRUFBSSxFQUFTLEVBQU0sQ0FDdEQsR0FBSSxPQUFPLElBQU8sV0FDaEIsTUFBVSxVQUFVLGlDQUFpQyxFQUd2RCxJQUFJLEVBQVcsSUFBSSxFQUFHLEVBQUksR0FBVyxFQUFTLENBQUksRUFDOUMsRUFBTSxFQUFTLEVBQVMsRUFBUSxFQUVw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Z0NBQWtDLFVBQ3hDLEVBQUssOEJBQ0wsRUFDVixFQUNJLE9BQU8sRUFBSyxnQ0FBa0MsVUFDeEMsRUFBSyw4QkFDTCxFQUNWLFFBQVcsS0FBWSxPQUFPLEtBQUssRUFBSyxhQUFlLENBQUMsQ0FBQyxFQUNyRCxHQUFJLE9BQU8sRUFBSyxZQUFZLEtBQWMsU0FDdEMsRUFBWSxHQUFZLEVBQUssWUFBWSxHQUlqRCxNQUFPLENBQ0gsT0FBUSxFQUNSLE9BQVEsRUFDUixHQUFJLENBQUMsRUFBTyxJQUFTLEVBQUcsR0FBRyxFQUFPLENBQUksRUFDdEMsS0FBTSxDQUFDLEVBQU8sSUFBUyxFQUFHLEtBQUssRUFBTyxDQUFJLEVBQzFDLElBQUssQ0FBQyxFQUFPLElBQWEsRUFBRyxJQUFJLEVBQU8sQ0FBUSxDQUNwRCxHQUlILENBQUMsSUFBZ0IsQ0FDZCxFQUFPLFNBQVcsSUFDbkIsT0FBTyxTQUFXLFNBQVcsT0FBUyxDQUFDLENBQUMiLAogICJkZWJ1Z0lkIjogIjE4QzY3QkJERkE4NUJFN0I2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/package.json
CHANGED
|
@@ -1,39 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sockethub/activity-streams",
|
|
3
|
-
"version": "4.4.0-alpha.
|
|
3
|
+
"version": "4.4.0-alpha.5",
|
|
4
4
|
"description": "A simple tool to facilitate handling and referencing activity streams without unnecessary verbosity",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
"karma": "6.3.16",
|
|
13
|
-
"karma-chai": "0.1.0",
|
|
14
|
-
"karma-chrome-launcher": "3.1.0",
|
|
15
|
-
"karma-firefox-launcher": "2.1.2",
|
|
16
|
-
"karma-mocha": "2.0.1",
|
|
17
|
-
"mocha": "9.2.1",
|
|
18
|
-
"webpack": "5.69.1",
|
|
19
|
-
"webpack-cli": "4.9.2"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/activity-streams.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/"
|
|
9
|
+
],
|
|
10
|
+
"engines": {
|
|
11
|
+
"bun": ">=1.2"
|
|
20
12
|
},
|
|
21
13
|
"repository": {
|
|
22
14
|
"type": "git",
|
|
23
15
|
"url": "git+https://github.com/sockethub/sockethub.git",
|
|
24
|
-
"directory": "packages/activity-streams
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"clean": "npx rimraf browser coverage",
|
|
28
|
-
"clean:deps": "npx rimraf node_modules",
|
|
29
|
-
"compliance": "yarn run test && yarn run coverage",
|
|
30
|
-
"test:node": "c8 -r text mocha ./src/**/*.test.js",
|
|
31
|
-
"test:node:lcov": "c8 -r lcov mocha ./src/**/*.test.js",
|
|
32
|
-
"test:browser": "karma start --single-run --browsers ChromeHeadless,FirefoxHeadless ./karma.config.js",
|
|
33
|
-
"coverage": "c8 check-coverage --statements 95 --branches 95 --functions 85 --lines 95",
|
|
34
|
-
"build": "webpack --mode production",
|
|
35
|
-
"release": "yarn run build && yarn run test",
|
|
36
|
-
"test": "yarn run build && yarn run test:node && yarn run test:browser"
|
|
16
|
+
"directory": "packages/activity-streams"
|
|
37
17
|
},
|
|
38
18
|
"keywords": [
|
|
39
19
|
"activity",
|
|
@@ -46,6 +26,22 @@
|
|
|
46
26
|
"bugs": {
|
|
47
27
|
"url": "https://github.com/sockethub/sockethub/issues"
|
|
48
28
|
},
|
|
49
|
-
"homepage": "https://github.com/sockethub/sockethub/tree/master/packages/activity-streams
|
|
50
|
-
"
|
|
29
|
+
"homepage": "https://github.com/sockethub/sockethub/tree/master/packages/activity-streams",
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "bun run clean && bun run build:js && bun run build:minify",
|
|
32
|
+
"build:js": "bun build ./src/activity-streams.ts --target=browser --sourcemap=inline --format=esm --outdir=dist/",
|
|
33
|
+
"build:minify": "bun build ./src/activity-streams.ts --target=browser --sourcemap=inline --format=esm --outfile=dist/activity-streams.min.js --minify",
|
|
34
|
+
"clean": "rm -rf dist",
|
|
35
|
+
"test:browser": "wtr dist/**/*.test.js --node-resolve --puppeteer"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"eventemitter3": "5.0.1"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@sockethub/schemas": "3.0.0-alpha.5",
|
|
42
|
+
"@types/bun": "latest",
|
|
43
|
+
"@web/test-runner": "^0.19.0",
|
|
44
|
+
"@web/test-runner-puppeteer": "^0.17.0"
|
|
45
|
+
},
|
|
46
|
+
"gitHead": "341ea9eeca6afd1442fe6e01457bc21d112b91a4"
|
|
51
47
|
}
|