@atproto/api 0.18.5 → 0.18.6
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/CHANGELOG.md +8 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +4 -0
- package/dist/agent.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +12 -8
- package/dist/client/index.js.map +1 -1
- package/dist/client/lexicons.d.ts +144 -2
- package/dist/client/lexicons.d.ts.map +1 -1
- package/dist/client/lexicons.js +73 -0
- package/dist/client/lexicons.js.map +1 -1
- package/dist/client/types/app/bsky/actor/defs.d.ts +13 -1
- package/dist/client/types/app/bsky/actor/defs.d.ts.map +1 -1
- package/dist/client/types/app/bsky/actor/defs.js +9 -0
- package/dist/client/types/app/bsky/actor/defs.js.map +1 -1
- package/dist/client/types/app/bsky/contact/defs.d.ts +10 -0
- package/dist/client/types/app/bsky/contact/defs.d.ts.map +1 -1
- package/dist/client/types/app/bsky/contact/defs.js +9 -0
- package/dist/client/types/app/bsky/contact/defs.js.map +1 -1
- package/dist/client/types/app/bsky/contact/sendNotification.d.ts +26 -0
- package/dist/client/types/app/bsky/contact/sendNotification.d.ts.map +1 -0
- package/dist/client/types/app/bsky/contact/sendNotification.js +11 -0
- package/dist/client/types/app/bsky/contact/sendNotification.js.map +1 -0
- package/dist/predicate.d.ts +1 -0
- package/dist/predicate.d.ts.map +1 -1
- package/dist/predicate.js +2 -1
- package/dist/predicate.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/src/agent.ts +3 -0
- package/src/client/index.ts +14 -0
- package/src/client/lexicons.ts +79 -0
- package/src/client/types/app/bsky/actor/defs.ts +22 -0
- package/src/client/types/app/bsky/contact/defs.ts +19 -0
- package/src/client/types/app/bsky/contact/sendNotification.ts +44 -0
- package/src/predicate.ts +3 -0
- package/src/types.ts +6 -0
- package/tests/atp-agent.test.ts +82 -1
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atproto/api
|
|
2
2
|
|
|
3
|
+
## 0.18.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#4432](https://github.com/bluesky-social/atproto/pull/4432) [`39fa570`](https://github.com/bluesky-social/atproto/commit/39fa57080fa04aa547b093cfeaaced3e2e62fc41) Thanks [@estrattonbailey](https://github.com/estrattonbailey)! - Add new read-only `#declaredAgePref` with computed age flags e.g. `isOverAge18`.
|
|
8
|
+
|
|
9
|
+
- [#4430](https://github.com/bluesky-social/atproto/pull/4430) [`f4cef84`](https://github.com/bluesky-social/atproto/commit/f4cef84494114ca927c66428920ca3dc24ad2b1e) Thanks [@rafaeleyng](https://github.com/rafaeleyng)! - Add app.bsky.contact.sendNotification endpoint
|
|
10
|
+
|
|
3
11
|
## 0.18.5
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,UAAU,EAEX,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAEf,KAAK,EACL,MAAM,EAEN,KAAK,EACL,OAAO,EACR,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAU,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,EACL,+BAA+B,EAC/B,eAAe,EACf,eAAe,EAChB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EAIzB,MAAM,SAAS,CAAA;AAqBhB,YAAY,EAAE,YAAY,EAAE,CAAA;AAE5B;;;;;;;;GAQG;AACH,qBAAa,KAAM,SAAQ,UAAU;;IAGnC;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAqB;IAE1D;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,kBAAkB;IAQzC,GAAG,QAAkB;IACrB,GAAG,QAAkB;IACrB,IAAI,SAAmB;IACvB,KAAK,UAAoB;IAEzB,qCAAqC;IACrC,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;gBAE3B,OAAO,EAAE,cAAc,GAAG,YAAY,GAAG,mBAAmB;IAqCxE,KAAK,IAAI,KAAK;IAId,QAAQ,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAQrC,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAGrC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAO1C;;OAEG;IACH,IAAI,WAAW,sBAEd;IAED,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAK;IAEhC,iBAAiB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE;IAIhD,wDAAwD;IACxD,uBAAuB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE;IAStD,KAAK,CAAC,EAAE,YAAY,CAAA;IAEpB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAKzC,qDAAqD;IACrD,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM;IASjE;;OAEG;IACH,IAAI,GAAG,uBAEN;IAED,sDAAsD;IACtD,IAAI,UAAU,WAEb;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAGtB;IAED;;OAEG;IACI,mBAAmB,IAAI,OAAO,CAAC,IAAI,IAAI;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;IAM7D,qCAAqC;IACrC,IAAI,GAAG,SAEN;IAID;;OAEG;IACH,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CACL;IAE9C;;OAEG;IACH,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAGH;IAE1D;;OAEG;IACH,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CACP;IAEpD;;OAEG;IACH,sBAAsB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAGd;IAMzD,WAAW,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CACJ;IAE9C,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CACN;IAEhD,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CACN;IAEhD,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CACN;IAEhD,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACN;IAErC,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACD;IAE3C,QAAQ,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CACD;IAE3C,aAAa,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CACN;IAEhD,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CACH;IAE9C,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CACL;IAEhD,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CACH;IAE9C,WAAW,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CACJ;IAE/C,cAAc,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CACP;IAElD,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CACL;IAEhD,qBAAqB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAGX;IAE5D,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAGP;IAE/D,wBAAwB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAGd;IAE5D,WAAW,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CACJ;IAE3C,mBAAmB,CACvB,KAAK,EAAE,eAAe,GAAG,eAAe,GAAG,MAAM,EAAE,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,+BAA+B,EAAE,CAAC,CAAC;IA6BvD,IAAI,CACR,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GACrC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC;;;;IASvC,UAAU,CAAC,OAAO,EAAE,MAAM;IAU1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;;;;IAWjE,UAAU,CAAC,OAAO,EAAE,MAAM;IAU1B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;;;;IAWnE,YAAY,CAAC,SAAS,EAAE,MAAM;IAU9B,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;;;;IAW7D,YAAY,CAAC,SAAS,EAAE,MAAM;IAUpC;;;OAGG;IACG,aAAa,CACjB,QAAQ,EAAE,CACR,QAAQ,EAAE,mBAAmB,CAAC,MAAM,GAAG,SAAS,KAE9C,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,GACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAChD,OAAO,CAAC,IAAI,CAAC;IA0CV,IAAI,CAAC,KAAK,EAAE,MAAM;IAIlB,MAAM,CAAC,KAAK,EAAE,MAAM;IAIpB,WAAW,CAAC,GAAG,EAAE,MAAM;IAIvB,aAAa,CAAC,GAAG,EAAE,MAAM;IAIzB,YAAY,CAAC,GAAG,EAAE,MAAM;;;;IAUxB,cAAc,CAAC,GAAG,EAAE,MAAM;IAkB1B,uBAAuB,CAAC,MAAM,iEAA2B;IAIzD,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IA+M1C,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,CAAC,SAAS,EAAE;IAe5D,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,SAAS,EAAE;IAmBjE,aAAa,CACjB,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,EAAE;IAavE,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE;IAMpC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;eAumBjC,MAAM,EAAE;gBAAU,MAAM,EAAE;;IAhmB9C;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,MAAM;eA6lBR,MAAM,EAAE;gBAAU,MAAM,EAAE;;IAtlB9C;;OAEG;IACG,eAAe,CAAC,CAAC,EAAE,MAAM;eAmlBX,MAAM,EAAE;gBAAU,MAAM,EAAE;;IA5kB9C;;OAEG;IACG,aAAa,CAAC,CAAC,EAAE,MAAM;eAykBT,MAAM,EAAE;gBAAU,MAAM,EAAE;;IAlkB9C;;OAEG;IACG,gBAAgB,CAAC,CAAC,EAAE,MAAM;eA+jBZ,MAAM,EAAE;gBAAU,MAAM,EAAE;;IAxjBxC,sBAAsB,CAAC,CAAC,EAAE,OAAO;IAiBjC,mBAAmB,CACvB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,eAAe,EACtB,UAAU,CAAC,EAAE,MAAM;IAwEf,UAAU,CAAC,GAAG,EAAE,MAAM;IAmBtB,aAAa,CAAC,GAAG,EAAE,MAAM;IAiBzB,kBAAkB,CAAC,EACvB,SAAS,GACV,EAAE;QACD,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KACrC;IAiBK,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC;IAiBpE,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,wBAAwB,CAAC;IAc1D,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAc7D;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,IAAI,CACb,SAAS,EACT,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAClD;IAwCH;;OAEG;IACG,aAAa,CAAC,aAAa,EAAE,gBAAgB,CAAC,SAAS,EAAE;IAI/D;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CACd,SAAS,EACT,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAClD,EAAE;IAKL;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS;IA0C3D;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,gBAAgB,CAAC,SAAS;IA8B3D;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,SAAS,EAAE;IAIzD,QAAQ,CAAC,OAAO,EAAE,MAAM;IAIxB,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAc5C,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAiB9C,6BAA6B,CACjC,KAAK,EAAE,gBAAgB,CAAC,oBAAoB,GAAG,SAAS;IAoB1D;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,GAAG;IAoC/B;;OAEG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE;IAc/B,0BAA0B,CAC9B,QAAQ,EAAE,gBAAgB,CAAC,2BAA2B;IA0BlD,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB;IAuBvE;;;;;;;OAOG;YACW,iBAAiB;YAqBjB,gBAAgB;IAoB9B;;OAEG;YACW,qBAAqB;YAyBrB,6BAA6B;CA2D5C"}
|
package/dist/agent.js
CHANGED
|
@@ -624,6 +624,10 @@ class Agent extends xrpc_1.XrpcClient {
|
|
|
624
624
|
prefs.birthDate = new Date(pref.birthDate);
|
|
625
625
|
}
|
|
626
626
|
}
|
|
627
|
+
else if (predicate.isValidDeclaredAgePref(pref)) {
|
|
628
|
+
const { $type: _, ...declaredAgePref } = pref;
|
|
629
|
+
prefs.declaredAge = declaredAgePref;
|
|
630
|
+
}
|
|
627
631
|
else if (predicate.isValidFeedViewPref(pref)) {
|
|
628
632
|
// feed view preferences
|
|
629
633
|
const { $type: _, feed, ...v } = pref;
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAkC;AAClC,oDAAgD;AAChD,4CAAuD;AACvD,wCAKsB;AACtB,0CAUuB;AACvB,gDAA2C;AAG3C,mCAA0C;AAC1C,6CAA6D;AAC7D,sDAAkE;AAMlE,uDAAwC;AAExC,mCAWgB;AAChB,iCAMe;AAEf,MAAM,uBAAuB,GAAG;IAC9B,WAAW,EAAE,KAAK;IAClB,uBAAuB,EAAE,IAAI;IAC7B,sBAAsB,EAAE,CAAC;IACzB,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;CACtB,CAAA;AAED,MAAM,yBAAyB,GAAG;IAChC,IAAI,EAAE,SAAS;CAChB,CAAA;AAID;;;;;;;;GAQG;AACH,MAAa,KAAM,SAAQ,iBAAU;IAQnC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAwB;QACvC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAK,CAAC,CAAA,CAAC,kBAAkB;QACnE,CAAC;IACH,CAAC;IASD,qCAAqC;IACrC,IAAI,IAAI;QACN,OAAO,IAAI,CAAA;IACb,CAAC;IAID,YAAY,OAA4D;QACtE,MAAM,cAAc,GAClB,OAAO,OAAO,KAAK,QAAQ,IAAI,cAAc,IAAI,OAAO;YACtD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC;gBACE,GAAG,EAAE,SAAS;gBACd,YAAY,EAAE,IAAA,wBAAiB,EAAC,OAAO,CAAC;aACzC,CAAA;QAEP,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAClB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAE1C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC1C,CAAC;YAED,sEAAsE;YACtE,qBAAqB;YACrB,OAAO,CAAC,GAAG,CACT,yBAAyB,EACzB;gBACE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;gBAC7C,GAAG,IAAI,CAAC,QAAQ;gBAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE;aAC/C;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CACd,CAAA;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACpE,CAAC,EAAE,kBAAO,CAAC,CAAA;QA5Cb,YAAY;QAEZ;;;;mBAAM,IAAI,aAAK,CAAC,IAAI,CAAC;WAAA;QACrB;;;;mBAAM,IAAI,aAAK,CAAC,IAAI,CAAC;WAAA;QACrB;;;;mBAAO,IAAI,cAAM,CAAC,IAAI,CAAC;WAAA;QACvB;;;;mBAAQ,IAAI,eAAO,CAAC,IAAI,CAAC;WAAA;QAOhB;;;;;WAA8B;QAoEvC;;;;mBAA8B,EAAE;WAAA;QAYhC,YAAY;QAEZ,+CAA+C;QAE/C;;;;;WAAoB;QAmDpB,kDAAkD;QAElD;;WAEG;QACH;;;;mBAAsD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAE9C;;WAEG;QACH;;;;mBAAgE,CAC9D,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE1D;;WAEG;QACH;;;;mBAA8D,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC3E,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAEpD;;WAEG;QACH;;;;mBAA0E,CACxE,IAAI,EACJ,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;WAAA;QAEzD,YAAY;QAEZ,+CAA+C;QAE/C;;;;mBAAqD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAA8C,CAAC,MAAM,EAAE,EAAE,CACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;WAAA;QAErC;;;;mBAA+C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE3C;;;;mBAA+C,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE3C;;;;mBAAyD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAoD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAAoD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACnE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE9C;;;;mBAAsD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE/C;;;;mBAA4D,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAC3E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAElD;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAEhD;;;;mBAA0E,CACxE,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE5D;;;;mBAAyE,CACvE,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE/D;;;;mBAA6E,CAC3E,MAAM,EACN,IAAI,EACJ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAE5D;;;;mBAAwD,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;WAAA;QAwgCjD,mBAAmB;QAEnB,2BAAa,IAAI,oBAAS,EAAE;QAE5B;;;;;;;WAOG;UATyB;QA3sC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED,2BAA2B;IAE3B,KAAK;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;IACtD,CAAC;IAED,QAAQ,CAAkB,IAAO;QAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,WAA+B,EAAE,GAAW;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,CAAC,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;QACnD,OAAO,IAAiC,CAAA;IAC1C,CAAC;IAED,YAAY;IAEZ,kDAAkD;IAElD;;OAEG;IACH,IAAI,WAAW;QACb,OAAQ,IAAI,CAAC,WAA4B,CAAC,WAAW,CAAA;IACvD,CAAC;IAID,iBAAiB,CAAC,WAA8B;QAC9C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,aAAK,CAAC,CAAA,CAAC,kBAAkB;IAC3D,CAAC;IAED,wDAAwD;IACxD,uBAAuB,CAAC,WAA8B;QACpD,uDAAuD;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,aAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAQD,cAAc,CAAC,KAA0B;QACvC,IAAI,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;;YACrC,IAAI,CAAC,KAAK,GAAG,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,qDAAqD;IACrD,oBAAoB,CAAC,WAA+B,EAAE,GAAW;QAC/D,sDAAsD;QACtD,IAAI,IAAA,aAAK,EAAC,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,YAAY;IAEZ,4BAA4B;IAE5B;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;IAChC,CAAC;IAED,sDAAsD;IACtD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACI,mBAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IACjD,CAAC;IAED,YAAY;IAEZ,qCAAqC;IACrC,IAAI,GAAG;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAgGD,KAAK,CAAC,mBAAmB,CACvB,KAAmD;QAEnD,2BAA2B;QAC3B,MAAM,IAAI,GAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC5C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QACrB,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YACtC,IAAI;YACJ,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,4EAA4E;QAC5E,MAAM,SAAS,GAAG,EAAE,CAAA;QACpB,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,IAAI;iBAChC,KAAiD,EAAE,CAAC;gBACrD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,2CAA8B,EAAC,OAAO,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAC2C;QAE3C,MAAM,CAAC,SAAS,KAAhB,MAAM,CAAC,SAAS,GAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACnC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB,MAAgC,CACjC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,QAAQ,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,GAAW,EAAE,GAAkC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACnC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG;SACJ,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,QAAQ,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,QAAQ,CAAC,QAAQ;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,GAAW,EAAE,GAAkC;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CACrC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG;SACJ,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,UAAU,GAAG,IAAI,cAAK,CAAC,SAAS,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,GAAkC;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CACtC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG;SACJ,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,UAAU,GAAG,IAAI,cAAK,CAAC,SAAS,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE,UAAU,CAAC,QAAQ;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,QAIiD;QAEjD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAA;YAC3B,MAAM,UAAU,GAAG,wBAAwB,CAAA;YAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;iBACzC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAC7C,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAA;YAE1B,MAAM,cAAc,GAClB,QAAQ,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvD,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK;gBACrB,CAAC,CAAC,SAAS,CAAA;YAEf,iBAAiB;YACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAA;YAE9C,qDAAqD;YACrD,MAAM,UAAU,GAAG,2BAAmB,CAAC,cAAc,CAAC;gBACpD,KAAK,EAAE,UAAU;gBACjB,GAAG,OAAO;aACX,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,UAAU,CAAC,KAAK,CAAA;YACxB,CAAC;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,IAAI;gBACJ,UAAU;gBACV,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,UAAU,CAAC,KAAK;gBACxB,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;aACvC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,OAAO,IAAA,kBAAK,EAAC,MAAM,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,+BAAuB,CAAC,gBAAgB;SACxE,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAW;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CACzC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EACzB;YACE,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,CAAC;SACT,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,cAAK,CAAC,OAAO,CAAC,CAAA;YACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC1C,IAAI;gBACJ,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAoB;YAC7B,KAAK,EAAE;gBACL,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,SAAS;aAClB;YACD,8BAA8B;YAC9B,UAAU,EAAE,SAAS;YACrB,aAAa,EAAE;gBACb,IAAI,EAAE;oBACJ,GAAG,uBAAuB;iBAC3B;aACF;YACD,eAAe,EAAE,EAAE,GAAG,yBAAyB,EAAE;YACjD,eAAe,EAAE;gBACf,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE,EAAE,GAAG,+BAAsB,EAAE;gBACrC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvC,GAAG;oBACH,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;gBACH,UAAU,EAAE,EAAE;gBACd,WAAW,EAAE,EAAE;aAChB;YACD,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE;aACT;YACD,YAAY,EAAE;gBACZ,YAAY,EAAE,EAAE;gBAChB,mBAAmB,EAAE,SAAS;gBAC9B,IAAI,EAAE,EAAE;aACT;YACD,uBAAuB,EAAE;gBACvB,oBAAoB,EAAE,SAAS;gBAC/B,sBAAsB,EAAE,SAAS;aAClC;YACD,iBAAiB,EAAE;gBACjB,UAAU,EAAE,KAAK;aAClB;SACF,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;QACxD,MAAM,UAAU,GAAwC,EAAE,CAAA;QAC1D,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,4BAA4B;gBAC5B,KAAK,CAAC,eAAe,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAA;YAC1D,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,2BAA2B;gBAC3B,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAA;gBACvD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,uBAAuB;gBACvB,KAAK,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW;qBAC9C,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;qBAC3C,MAAM,CACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC9B,GAAG,OAAO;oBACV,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC,CACJ,CAAA;YACL,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,yBAAyB;gBACzB,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;gBAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAClC,CAAC;iBAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,mBAAmB;gBACnB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,wBAAwB;gBACxB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBACrC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,CAAC,EAAE,CAAA;YAClE,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,0BAA0B;gBAC1B,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBAC/B,KAAK,CAAC,eAAe,GAAG,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAA;YAC5D,CAAC;iBAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAA;gBAC/B,KAAK,CAAC,SAAS,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAA;YAChD,CAAC;iBAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA;gBAE7C,IAAI,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC5C,KAAK,CAAC,eAAe,CAAC,UAAU;wBAC9B,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,KAAK,CAAA;4BAC5C,OAAO,IAAI,CAAA;wBACb,CAAC,CAAC,CAAA;gBACN,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;YAChD,CAAC;iBAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAA;gBACzD,KAAK,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAA;gBACjE,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAC3C,CAAC;iBAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,KAAK,CAAC,uBAAuB,CAAC,oBAAoB;oBAChD,IAAI,CAAC,oBAAoB,CAAA;gBAC3B,KAAK,CAAC,uBAAuB,CAAC,sBAAsB;oBAClD,IAAI,CAAC,sBAAsB,CAAA;YAC/B,CAAC;iBAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,iBAAiB,GAAG;oBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAA;YACH,CAAC;QACH,CAAC;QAED;;;;;;;;WAQG;QACH,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;YAErC,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;gBACpB,MAAM,wBAAwB,GAG1B,IAAI,GAAG,EAAE,CAAA;gBAEb,8BAA8B;gBAC9B,wBAAwB,CAAC,GAAG,CAAC,UAAU,EAAE;oBACvC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;oBACjB,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,WAAW;oBAClB,MAAM,EAAE,IAAI;iBACb,CAAC,CAAA;gBAEF,+CAA+C;gBAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,GAAG,CAAC,CAAA;oBAClC,4BAA4B;oBAC5B,IAAI,IAAI,KAAK,SAAS;wBAAE,SAAQ;oBAChC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;wBAChC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;wBACjB,IAAI;wBACJ,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,IAAI;qBACb,CAAC,CAAA;gBACJ,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACvC,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,GAAG,CAAC,CAAA;wBAClC,4BAA4B;wBAC5B,IAAI,IAAI,KAAK,SAAS;4BAAE,SAAQ;wBAChC,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE;4BAChC,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;4BACjB,IAAI;4BACJ,KAAK,EAAE,GAAG;4BACV,MAAM,EAAE,KAAK;yBACd,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBAED,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,UAAU,GAAG;oBACjB;wBACE,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;wBACjB,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,WAAW;wBAClB,MAAM,EAAE,IAAI;qBACb;iBACF,CAAA;YACH,CAAC;YAED,8DAA8D;YAC9D,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAClD,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CACjD,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAC7C,CAAA;gBACD,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAA6B,CAAA;YACjE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;oBACtC,IAAI,CAAC,UAA6B,CAAA;YACtC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,iBAAiB,CAC9C,KAAK,CAAC,eAAe,CAAC,MAAM,CAC7B,CAAA;QAED,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAErE,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAwC;QAChE,UAAU,CAAC,OAAO,CAAC,wBAAiB,CAAC,CAAA;QACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAsC,CAAA;QACtE,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1B,yCAAyC;YACzC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CACtC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,kBAAgD;QACrE,kBAAkB,CAAC,GAAG,CAAC,wBAAiB,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE;YACvD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClC,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAC5C,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CACzC,CAAA;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO;wBACL,GAAG,SAAS;wBACZ,qBAAqB;wBACrB,MAAM,EAAE,cAAc,CAAC,MAAM;qBAC9B,CAAA;gBACH,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,UAA2E;QAE3E,MAAM,MAAM,GAAiC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,GAAG,CAAC;YACJ,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;SAClB,CAAC,CAAC,CAAA;QACH,MAAM,CAAC,OAAO,CAAC,wBAAiB,CAAC,CAAA;QACjC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACxD,GAAG,UAAU;YACb,GAAG,MAAM;SACV,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAa;QAClC,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACxD,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SAClE,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAe,EAAE,MAAgB;QACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,KAAK;YACL,MAAM;SACP,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,CAAS;QAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM;SACP,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,CAAS;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,CAAS;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAClD,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,CAAS;QAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAe,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;YACxE,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;SAC1C,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,CAAU;QACrC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CACrC,SAAS,CAAC,uBAAuB,CAClC,IAAI;gBACH,KAAK,EAAE,sCAAsC;gBAC7C,OAAO,EAAE,CAAC;aACX,CAAA;YAED,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAA;YAE5B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5D,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,GAAW,EACX,KAAsB,EACtB,UAAmB;QAEnB,IAAI,UAAU,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;QACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,KAAK;iBACpB,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC;iBACzC,QAAQ,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAC/D,IAAI;gBACL,KAAK,EAAE,sCAAsC;gBAC7C,KAAK,EAAE,GAAG;gBACV,UAAU;gBACV,UAAU,EAAE,KAAK;aAClB,CAAA;YAED,SAAS,CAAC,UAAU,GAAG,KAAK,CAAA;YAE5B,IAAI,eAAsE,CAAA;YAC1E,IAAI,wBAAgB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,YAAY;gBACZ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;oBAC1B,MAAM,gBAAgB,GAAG;wBACvB,eAAe,EAAE,MAAM;wBACvB,IAAI,EAAE,MAAM;wBACZ,MAAM,EAAE,YAAY;wBACpB,mEAAmE;wBACnE,SAAS,EAAE,IAAI;qBAChB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBAElB,wDAAwD;oBACxD,IAAI,gBAAgB,EAAE,CAAC;wBACrB,eAAe,GAAG,KAAK;6BACpB,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC;6BACzC,QAAQ,CACP,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,KAAK,KAAK,gBAAgB;4BAC/B,IAAI,CAAC,UAAU,KAAK,SAAS,CAChC,IAAI;4BACL,KAAK,EAAE,sCAAsC;4BAC7C,KAAK,EAAE,gBAAgB;4BACvB,UAAU,EAAE,SAAS;4BACrB,UAAU,EAAE,KAAK;yBAClB,CAAA;wBAED,eAAgB,CAAC,UAAU,GAAG,KAAK,CAAA;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,CAC1D;iBACA,MAAM,CAAC,SAAS,CAAC;iBACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAA;gBACjC,OAAO,CACL,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC1C,CAAC,CACC,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK;wBACpC,IAAI,CAAC,UAAU,KAAK,SAAS,CAC9B,CACF,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI;gBACpE,KAAK,EAAE,kCAAkC;gBACzC,QAAQ,EAAE,EAAE;aACb,CAAA;YAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;gBAClE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACxD,MAAM,CAAC,YAAY,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI;gBACpE,KAAK,EAAE,kCAAkC;gBACzC,QAAQ,EAAE,EAAE;aACb,CAAA;YAED,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YAE1E,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBACxD,MAAM,CAAC,YAAY,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,SAAS,GAGV;QACC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,mBAAmB,GAAG,KAAK,CAAC,QAAQ,CACxC,SAAS,CAAC,0BAA0B,CACrC,IAAI;gBACH,KAAK,EAAE,yCAAyC;aACjD,CAAA;YAED,mBAAmB,CAAC,SAAS;gBAC3B,SAAS,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;YAEjE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;iBAC/D,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,IAAqC;QACxE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK;iBACnB,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;iBACrC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAEzC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;iBACrE,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,kCAAkC;gBACzC,IAAI;aACL,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAuC;QAC9D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEhE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBACpD,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,oCAAoC;aAC5C,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAsC;QAC3D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;YAE/D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;iBACnD,MAAM,CAAC;gBACN,GAAG,QAAQ;gBACX,GAAG,IAAI;gBACP,KAAK,EAAE,mCAAmC;aAC3C,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,SAGC;QAED,MAAM,cAAc,GAAG,IAAA,6BAAsB,EAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAE9D,IAAI,CAAC,cAAc;YAAE,OAAM;QAE3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEpE,MAAM,YAAY,GAA+B;gBAC/C,EAAE,EAAE,gBAAG,CAAC,OAAO,EAAE;gBACjB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;gBAChC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,KAAK;gBAC3C,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS;aAC5C,CAAA;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAEvC;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,uCAAuC;gBACvC,cAAc,GAAG;oBACf,KAAK,EAAE,oCAAoC;oBAC3C,KAAK,EAAE,CAAC,YAAY,CAAC;iBACtB,CAAA;YACH,CAAC;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,aAA2C;QAC7D,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,UAGG;QAEH,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAqC;QACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEtE,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;oBAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;oBAErD,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG;4BACd,GAAG,YAAY;4BACf,GAAG,SAAS;yBACb,CAAA;wBACD,OAAO;4BACL,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,gBAAG,CAAC,OAAO,EAAE;4BACpC,KAAK,EACH,IAAA,6BAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK;4BAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;4BAC9B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;4BACzC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;yBAC1C,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,YAAY,CAAA;oBACrB,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;gBAED,OAAO,KAAK;qBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAAqC;QACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YAEtE,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;oBAEhE,IAAI,KAAK,EAAE,CAAC;wBACV,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACjC,MAAK;oBACP,CAAC;gBACH,CAAC;gBAED;;mBAEG;gBACH,cAAc,CAAC,KAAK,GAAG,4BAA4B,CACjD,cAAc,CAAC,KAAK,CACrB,CAAA;gBAED,OAAO,KAAK;qBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpD,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,UAAwC;QAC7D,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAyB;QAChD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAE5D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAyB;QAClD,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAClD,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CACnC,CAAA;YAED,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,6BAA6B,CACjC,KAAwD;QAExD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,wBAAgB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAA;YACnE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QACzC,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAEhC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAQ;QAC7B,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAA;QAEhB,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACrC,OAAO,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAA;YACxB,CAAC,CAAC,CAAA;YAEF,IAAI,IAA0B,CAAA;YAE9B,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG;oBACL,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,GAAG,CAAA;YACZ,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAEjE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAa;QACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI;gBAChE,KAAK,EAAE,sCAAsC;aAC9C,CAAA;YAED,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;YAEpE,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACtD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,QAAsD;QAEtD,MAAM,MAAM,GACV,wBAAgB,CAAC,mCAAmC,CAAC,QAAQ,CAAC,CAAA;QAChE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QAEvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CACzB,SAAS,CAAC,kCAAkC,CAC7C,IAAI;gBACH,KAAK,EAAE,iDAAiD;aACzD,CAAA;YAED;;eAEG;YACH,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAA;YACzD,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAA;YAE7D,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;iBACjE,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,QAA4C;QACrE,MAAM,MAAM,GAAG,wBAAgB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAA;QACnE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,KAAK,CAAA;QAEvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI;gBACjE,KAAK,EAAE,uCAAuC;gBAC9C,UAAU,EAAE,KAAK;aAClB,CAAA;YAED,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;YAErC,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;iBACvD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAMD;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAC7B,EAEyC;QAEzC,IAAI,CAAC;YACH,MAAM,uBAAA,IAAI,wBAAW,CAAC,YAAY,EAAE,CAAA;YACpC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;YACxD,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACzC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;YAC7B,CAAC;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;gBACvC,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAA;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;gBAAS,CAAC;YACT,uBAAA,IAAI,wBAAW,CAAC,OAAO,EAAE,CAAA;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,MAAyB;QACvE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI;gBAC/D,KAAK,EAAE,qCAAqC;gBAC5C,KAAK,EAAE,EAAE;aACV,CAAA;YAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEvC,IAAI,MAAM,KAAK,MAAM;gBAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;gBAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAEhC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,CAAA;YAE7B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;iBACrD,MAAM,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CACjC,EAG0C;QAE1C,IAAI,GAAG,CAAA;QACP,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI;gBACnE,KAAK,EAAE,oCAAoC;gBAC3C,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX,CAAA;YAED,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;YAC3C,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;YAC3B,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;YAE7B,OAAO,KAAK;iBACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;iBAC1D,MAAM,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QACF,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,EAEiC;QAEjC,IAAI,sBAAsB,GAAiC,EAAE,CAAA;QAE7D,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CACnC,SAAS,CAAC,uBAAuB,CAClC,IAAI;gBACH,KAAK,EAAE,sCAAsC;gBAC7C,KAAK,EAAE,EAAE;aACV,CAAA;YAED,MAAM,aAAa,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;YAE9C,6CAA6C;YAC7C,cAAc,CAAC,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtD,6DAA6D;YAC7D,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAA;YAED,yBAAyB;YACzB,sBAAsB,GAAG,aAAa,CAAA;YAEtC,IAAI,YAAY,GAAG,KAAK;iBACrB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBAC5D,MAAM,CAAC,cAAc,CAAC,CAAA;YAEzB;;;;eAIG;YACH,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAA;YACpE,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,CAAA;gBACxC,MAAM,QAAQ,GAAG,IAAA,4BAAqB;gBACpC,mCAAmC;gBACnC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACtE,CAAA;gBACD,cAAc,GAAG;oBACf,GAAG,cAAc;oBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;iBAC7D,CAAA;gBACD,YAAY,GAAG,YAAY;qBACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;qBAC1D,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3B,CAAC;YAED,OAAO,YAAY,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,OAAO,sBAAsB,CAAA;IAC/B,CAAC;;AAj5CH,sBAo5CC;;AAn5CC,8BAA8B;AAE9B;;GAEG;AACI;;;;WAAiC,CAAC,wBAAgB,CAAC;EAAxC,CAAwC;AAg5C5D;;GAEG;AACH,SAAS,4BAA4B,CACnC,IAAuC;IAEvC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IAEhC,uBAAuB;IACvB,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,UAAU,GAAG,QAAQ,CAAA;IACvB,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,MAAoD;IAEpD,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAC7B,MAAM,cAAc,GAAuC;QACzD,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,QAAQ;KACrB,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAE,CAAA;QAC/C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAAmC;IAEnC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;IAClE,IAAI,IAAI,GAAa,EAAE,CAAA;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,GAAI,YAA8C,CAAC,QAAQ,CAAC,GAAG,CACjE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CACzB,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,WAAW,CAAC,CAAM;IACzB,OAAO,CACL,CAAC;QACD,OAAO,CAAC,KAAK,QAAQ;QACrB,iBAAiB,IAAI,CAAC;QACtB,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAC9B,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAM;IACxB,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,IAAI,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAmC;IACvE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,IAAI;QACP,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,gBAAG,CAAC,OAAO,EAAE;KAC7B,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,cAAc,CACrB,YAAwC,EACxC,OAAmC;IAEnC,2CAA2C;IAC3C,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,CAAA;IAClC,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,IAAI,UAAU,KAAK,OAAO,CAAC,EAAE,CAAA;IACzD,yCAAyC;IACzC,MAAM,kBAAkB,GAAG,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAA;IAE9E,OAAO,SAAS,IAAI,kBAAkB,CAAA;AACxC,CAAC","sourcesContent":["import AwaitLock from 'await-lock'\nimport { TID, retry } from '@atproto/common-web'\nimport { AtUri, ensureValidDid } from '@atproto/syntax'\nimport {\n FetchHandler,\n FetchHandlerOptions,\n XrpcClient,\n buildFetchHandler,\n} from '@atproto/xrpc'\nimport {\n AppBskyActorDefs,\n AppBskyActorProfile,\n AppBskyFeedPost,\n AppBskyLabelerDefs,\n AppNS,\n ChatNS,\n ComAtprotoRepoPutRecord,\n ComNS,\n ToolsNS,\n} from './client/index'\nimport { schemas } from './client/lexicons'\nimport { MutedWord, Nux } from './client/types/app/bsky/actor/defs'\nimport { $Typed, Un$Typed } from './client/util'\nimport { BSKY_LABELER_DID } from './const'\nimport { interpretLabelValueDefinitions } from './moderation'\nimport { DEFAULT_LABEL_SETTINGS } from './moderation/const/labels'\nimport {\n InterpretedLabelValueDefinition,\n LabelPreference,\n ModerationPrefs,\n} from './moderation/types'\nimport * as predicate from './predicate'\nimport { SessionManager } from './session-manager'\nimport {\n AtpAgentGlobalOpts,\n AtprotoProxy,\n AtprotoServiceType,\n BskyFeedViewPreference,\n BskyInterestsPreference,\n BskyPreferences,\n BskyThreadViewPreference,\n asAtprotoProxy,\n asDid,\n isDid,\n} from './types'\nimport {\n getSavedFeedType,\n sanitizeMutedWordValue,\n savedFeedsToUriArrays,\n validateNux,\n validateSavedFeed,\n} from './util'\n\nconst FEED_VIEW_PREF_DEFAULTS = {\n hideReplies: false,\n hideRepliesByUnfollowed: true,\n hideRepliesByLikeCount: 0,\n hideReposts: false,\n hideQuotePosts: false,\n}\n\nconst THREAD_VIEW_PREF_DEFAULTS = {\n sort: 'hotness',\n}\n\nexport type { FetchHandler }\n\n/**\n * An {@link Agent} is an {@link AtpBaseClient} with the following\n * additional features:\n * - AT Protocol labelers configuration utilities\n * - AT Protocol proxy configuration utilities\n * - Cloning utilities\n * - `app.bsky` syntactic sugar\n * - `com.atproto` syntactic sugar\n */\nexport class Agent extends XrpcClient {\n //#region Static configuration\n\n /**\n * The labelers to be used across all requests with the takedown capability\n */\n static appLabelers: readonly string[] = [BSKY_LABELER_DID]\n\n /**\n * Configures the Agent (or its sub classes) globally.\n */\n static configure(opts: AtpAgentGlobalOpts) {\n if (opts.appLabelers) {\n this.appLabelers = opts.appLabelers.map(asDid) // Validate & copy\n }\n }\n\n //#endregion\n\n com = new ComNS(this)\n app = new AppNS(this)\n chat = new ChatNS(this)\n tools = new ToolsNS(this)\n\n /** @deprecated use `this` instead */\n get xrpc(): XrpcClient {\n return this\n }\n\n readonly sessionManager: SessionManager\n\n constructor(options: SessionManager | FetchHandler | FetchHandlerOptions) {\n const sessionManager: SessionManager =\n typeof options === 'object' && 'fetchHandler' in options\n ? options\n : {\n did: undefined,\n fetchHandler: buildFetchHandler(options),\n }\n\n super((url, init) => {\n const headers = new Headers(init?.headers)\n\n if (this.proxy && !headers.has('atproto-proxy')) {\n headers.set('atproto-proxy', this.proxy)\n }\n\n // Merge the labelers header of this particular request with the app &\n // instance labelers.\n headers.set(\n 'atproto-accept-labelers',\n [\n ...this.appLabelers.map((l) => `${l};redact`),\n ...this.labelers,\n headers.get('atproto-accept-labelers')?.trim(),\n ]\n .filter(Boolean)\n .join(', '),\n )\n\n return this.sessionManager.fetchHandler(url, { ...init, headers })\n }, schemas)\n\n this.sessionManager = sessionManager\n }\n\n //#region Cloning utilities\n\n clone(): Agent {\n return this.copyInto(new Agent(this.sessionManager))\n }\n\n copyInto<T extends Agent>(inst: T): T {\n inst.configureLabelers(this.labelers)\n inst.configureProxy(this.proxy ?? null)\n inst.clearHeaders()\n for (const [key, value] of this.headers) inst.setHeader(key, value)\n return inst\n }\n\n withProxy(serviceType: AtprotoServiceType, did: string) {\n const inst = this.clone()\n inst.configureProxy(`${asDid(did)}#${serviceType}`)\n return inst as ReturnType<this['clone']>\n }\n\n //#endregion\n\n //#region ATPROTO labelers configuration utilities\n\n /**\n * The labelers statically configured on the class of the current instance.\n */\n get appLabelers() {\n return (this.constructor as typeof Agent).appLabelers\n }\n\n labelers: readonly string[] = []\n\n configureLabelers(labelerDids: readonly string[]) {\n this.labelers = labelerDids.map(asDid) // Validate & copy\n }\n\n /** @deprecated use {@link configureLabelers} instead */\n configureLabelersHeader(labelerDids: readonly string[]) {\n // Filtering non-did values for backwards compatibility\n this.configureLabelers(labelerDids.filter(isDid))\n }\n\n //#endregion\n\n //#region ATPROTO proxy configuration utilities\n\n proxy?: AtprotoProxy\n\n configureProxy(value: AtprotoProxy | null) {\n if (value === null) this.proxy = undefined\n else this.proxy = asAtprotoProxy(value)\n }\n\n /** @deprecated use {@link configureProxy} instead */\n configureProxyHeader(serviceType: AtprotoServiceType, did: string) {\n // Ignoring non-did values for backwards compatibility\n if (isDid(did)) this.configureProxy(`${did}#${serviceType}`)\n }\n\n //#endregion\n\n //#region Session management\n\n /**\n * Get the authenticated user's DID, if any.\n */\n get did() {\n return this.sessionManager.did\n }\n\n /** @deprecated Use {@link Agent.assertDid} instead */\n get accountDid() {\n return this.assertDid\n }\n\n /**\n * Get the authenticated user's DID, or throw an error if not authenticated.\n */\n get assertDid(): string {\n this.assertAuthenticated()\n return this.did\n }\n\n /**\n * Assert that the user is authenticated.\n */\n public assertAuthenticated(): asserts this is { did: string } {\n if (!this.did) throw new Error('Not logged in')\n }\n\n //#endregion\n\n /** @deprecated use \"this\" instead */\n get api() {\n return this\n }\n\n //#region \"com.atproto\" lexicon short hand methods\n\n /**\n * Upload a binary blob to the server\n */\n uploadBlob: typeof this.com.atproto.repo.uploadBlob = (data, opts) =>\n this.com.atproto.repo.uploadBlob(data, opts)\n\n /**\n * Resolve a handle to a DID\n */\n resolveHandle: typeof this.com.atproto.identity.resolveHandle = (\n params,\n opts,\n ) => this.com.atproto.identity.resolveHandle(params, opts)\n\n /**\n * Change the user's handle\n */\n updateHandle: typeof this.com.atproto.identity.updateHandle = (data, opts) =>\n this.com.atproto.identity.updateHandle(data, opts)\n\n /**\n * Create a moderation report\n */\n createModerationReport: typeof this.com.atproto.moderation.createReport = (\n data,\n opts,\n ) => this.com.atproto.moderation.createReport(data, opts)\n\n //#endregion\n\n //#region \"app.bsky\" lexicon short hand methods\n\n getTimeline: typeof this.app.bsky.feed.getTimeline = (params, opts) =>\n this.app.bsky.feed.getTimeline(params, opts)\n\n getAuthorFeed: typeof this.app.bsky.feed.getAuthorFeed = (params, opts) =>\n this.app.bsky.feed.getAuthorFeed(params, opts)\n\n getActorLikes: typeof this.app.bsky.feed.getActorLikes = (params, opts) =>\n this.app.bsky.feed.getActorLikes(params, opts)\n\n getPostThread: typeof this.app.bsky.feed.getPostThread = (params, opts) =>\n this.app.bsky.feed.getPostThread(params, opts)\n\n getPost: typeof this.app.bsky.feed.post.get = (params) =>\n this.app.bsky.feed.post.get(params)\n\n getPosts: typeof this.app.bsky.feed.getPosts = (params, opts) =>\n this.app.bsky.feed.getPosts(params, opts)\n\n getLikes: typeof this.app.bsky.feed.getLikes = (params, opts) =>\n this.app.bsky.feed.getLikes(params, opts)\n\n getRepostedBy: typeof this.app.bsky.feed.getRepostedBy = (params, opts) =>\n this.app.bsky.feed.getRepostedBy(params, opts)\n\n getFollows: typeof this.app.bsky.graph.getFollows = (params, opts) =>\n this.app.bsky.graph.getFollows(params, opts)\n\n getFollowers: typeof this.app.bsky.graph.getFollowers = (params, opts) =>\n this.app.bsky.graph.getFollowers(params, opts)\n\n getProfile: typeof this.app.bsky.actor.getProfile = (params, opts) =>\n this.app.bsky.actor.getProfile(params, opts)\n\n getProfiles: typeof this.app.bsky.actor.getProfiles = (params, opts) =>\n this.app.bsky.actor.getProfiles(params, opts)\n\n getSuggestions: typeof this.app.bsky.actor.getSuggestions = (params, opts) =>\n this.app.bsky.actor.getSuggestions(params, opts)\n\n searchActors: typeof this.app.bsky.actor.searchActors = (params, opts) =>\n this.app.bsky.actor.searchActors(params, opts)\n\n searchActorsTypeahead: typeof this.app.bsky.actor.searchActorsTypeahead = (\n params,\n opts,\n ) => this.app.bsky.actor.searchActorsTypeahead(params, opts)\n\n listNotifications: typeof this.app.bsky.notification.listNotifications = (\n params,\n opts,\n ) => this.app.bsky.notification.listNotifications(params, opts)\n\n countUnreadNotifications: typeof this.app.bsky.notification.getUnreadCount = (\n params,\n opts,\n ) => this.app.bsky.notification.getUnreadCount(params, opts)\n\n getLabelers: typeof this.app.bsky.labeler.getServices = (params, opts) =>\n this.app.bsky.labeler.getServices(params, opts)\n\n async getLabelDefinitions(\n prefs: BskyPreferences | ModerationPrefs | string[],\n ): Promise<Record<string, InterpretedLabelValueDefinition[]>> {\n // collect the labeler dids\n const dids: string[] = [...this.appLabelers]\n if (isBskyPrefs(prefs)) {\n dids.push(...prefs.moderationPrefs.labelers.map((l) => l.did))\n } else if (isModPrefs(prefs)) {\n dids.push(...prefs.labelers.map((l) => l.did))\n } else {\n dids.push(...prefs)\n }\n\n // fetch their definitions\n const labelers = await this.getLabelers({\n dids,\n detailed: true,\n })\n\n // assemble a map of labeler dids to the interpreted label value definitions\n const labelDefs = {}\n if (labelers.data) {\n for (const labeler of labelers.data\n .views as AppBskyLabelerDefs.LabelerViewDetailed[]) {\n labelDefs[labeler.creator.did] = interpretLabelValueDefinitions(labeler)\n }\n }\n\n return labelDefs\n }\n\n async post(\n record: Partial<AppBskyFeedPost.Record> &\n Omit<AppBskyFeedPost.Record, 'createdAt'>,\n ) {\n record.createdAt ||= new Date().toISOString()\n return this.app.bsky.feed.post.create(\n { repo: this.accountDid },\n record as AppBskyFeedPost.Record,\n )\n }\n\n async deletePost(postUri: string) {\n this.assertAuthenticated()\n\n const postUrip = new AtUri(postUri)\n return this.app.bsky.feed.post.delete({\n repo: postUrip.hostname,\n rkey: postUrip.rkey,\n })\n }\n\n async like(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.like.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteLike(likeUri: string) {\n this.assertAuthenticated()\n\n const likeUrip = new AtUri(likeUri)\n return this.app.bsky.feed.like.delete({\n repo: likeUrip.hostname,\n rkey: likeUrip.rkey,\n })\n }\n\n async repost(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.repost.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteRepost(repostUri: string) {\n this.assertAuthenticated()\n\n const repostUrip = new AtUri(repostUri)\n return this.app.bsky.feed.repost.delete({\n repo: repostUrip.hostname,\n rkey: repostUrip.rkey,\n })\n }\n\n async follow(subjectDid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.graph.follow.create(\n { repo: this.accountDid },\n {\n subject: subjectDid,\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteFollow(followUri: string) {\n this.assertAuthenticated()\n\n const followUrip = new AtUri(followUri)\n return this.app.bsky.graph.follow.delete({\n repo: followUrip.hostname,\n rkey: followUrip.rkey,\n })\n }\n\n /**\n * @note: Using this method will reset the whole profile record if it\n * previously contained invalid values (wrt to the profile lexicon).\n */\n async upsertProfile(\n updateFn: (\n existing: AppBskyActorProfile.Record | undefined,\n ) =>\n | Un$Typed<AppBskyActorProfile.Record>\n | Promise<Un$Typed<AppBskyActorProfile.Record>>,\n ): Promise<void> {\n const upsert = async () => {\n const repo = this.assertDid\n const collection = 'app.bsky.actor.profile'\n\n const existing = await this.com.atproto.repo\n .getRecord({ repo, collection, rkey: 'self' })\n .catch((_) => undefined)\n\n const existingRecord: AppBskyActorProfile.Record | undefined =\n existing && predicate.isValidProfile(existing.data.value)\n ? existing.data.value\n : undefined\n\n // run the update\n const updated = await updateFn(existingRecord)\n\n // validate the value returned by the update function\n const validation = AppBskyActorProfile.validateRecord({\n $type: collection,\n ...updated,\n })\n\n if (!validation.success) {\n throw validation.error\n }\n\n await this.com.atproto.repo.putRecord({\n repo,\n collection,\n rkey: 'self',\n record: validation.value,\n swapRecord: existing?.data.cid || null,\n })\n }\n\n return retry(upsert, {\n maxRetries: 5,\n retryable: (e) => e instanceof ComAtprotoRepoPutRecord.InvalidSwapError,\n })\n }\n\n async mute(actor: string) {\n return this.app.bsky.graph.muteActor({ actor })\n }\n\n async unmute(actor: string) {\n return this.app.bsky.graph.unmuteActor({ actor })\n }\n\n async muteModList(uri: string) {\n return this.app.bsky.graph.muteActorList({ list: uri })\n }\n\n async unmuteModList(uri: string) {\n return this.app.bsky.graph.unmuteActorList({ list: uri })\n }\n\n async blockModList(uri: string) {\n return this.app.bsky.graph.listblock.create(\n { repo: this.accountDid },\n {\n subject: uri,\n createdAt: new Date().toISOString(),\n },\n )\n }\n\n async unblockModList(uri: string) {\n const repo = this.accountDid\n\n const listInfo = await this.app.bsky.graph.getList({\n list: uri,\n limit: 1,\n })\n\n const blocked = listInfo.data.list.viewer?.blocked\n if (blocked) {\n const { rkey } = new AtUri(blocked)\n return this.app.bsky.graph.listblock.delete({\n repo,\n rkey,\n })\n }\n }\n\n async updateSeenNotifications(seenAt = new Date().toISOString()) {\n return this.app.bsky.notification.updateSeen({ seenAt })\n }\n\n async getPreferences(): Promise<BskyPreferences> {\n const prefs: BskyPreferences = {\n feeds: {\n saved: undefined,\n pinned: undefined,\n },\n // @ts-ignore populating below\n savedFeeds: undefined,\n feedViewPrefs: {\n home: {\n ...FEED_VIEW_PREF_DEFAULTS,\n },\n },\n threadViewPrefs: { ...THREAD_VIEW_PREF_DEFAULTS },\n moderationPrefs: {\n adultContentEnabled: false,\n labels: { ...DEFAULT_LABEL_SETTINGS },\n labelers: this.appLabelers.map((did) => ({\n did,\n labels: {},\n })),\n mutedWords: [],\n hiddenPosts: [],\n },\n birthDate: undefined,\n interests: {\n tags: [],\n },\n bskyAppState: {\n queuedNudges: [],\n activeProgressGuide: undefined,\n nuxs: [],\n },\n postInteractionSettings: {\n threadgateAllowRules: undefined,\n postgateEmbeddingRules: undefined,\n },\n verificationPrefs: {\n hideBadges: false,\n },\n }\n const res = await this.app.bsky.actor.getPreferences({})\n const labelPrefs: AppBskyActorDefs.ContentLabelPref[] = []\n for (const pref of res.data.preferences) {\n if (predicate.isValidAdultContentPref(pref)) {\n // adult content preferences\n prefs.moderationPrefs.adultContentEnabled = pref.enabled\n } else if (predicate.isValidContentLabelPref(pref)) {\n // content label preference\n const adjustedPref = adjustLegacyContentLabelPref(pref)\n labelPrefs.push(adjustedPref)\n } else if (predicate.isValidLabelersPref(pref)) {\n // labelers preferences\n prefs.moderationPrefs.labelers = this.appLabelers\n .map((did: string) => ({ did, labels: {} }))\n .concat(\n pref.labelers.map((labeler) => ({\n ...labeler,\n labels: {},\n })),\n )\n } else if (predicate.isValidSavedFeedsPrefV2(pref)) {\n prefs.savedFeeds = pref.items\n } else if (predicate.isValidSavedFeedsPref(pref)) {\n // saved and pinned feeds\n prefs.feeds.saved = pref.saved\n prefs.feeds.pinned = pref.pinned\n } else if (predicate.isValidPersonalDetailsPref(pref)) {\n // birth date (irl)\n if (pref.birthDate) {\n prefs.birthDate = new Date(pref.birthDate)\n }\n } else if (predicate.isValidFeedViewPref(pref)) {\n // feed view preferences\n const { $type: _, feed, ...v } = pref\n prefs.feedViewPrefs[feed] = { ...FEED_VIEW_PREF_DEFAULTS, ...v }\n } else if (predicate.isValidThreadViewPref(pref)) {\n // thread view preferences\n const { $type: _, ...v } = pref\n prefs.threadViewPrefs = { ...prefs.threadViewPrefs, ...v }\n } else if (predicate.isValidInterestsPref(pref)) {\n const { $type: _, ...v } = pref\n prefs.interests = { ...prefs.interests, ...v }\n } else if (predicate.isValidMutedWordsPref(pref)) {\n prefs.moderationPrefs.mutedWords = pref.items\n\n if (prefs.moderationPrefs.mutedWords.length) {\n prefs.moderationPrefs.mutedWords =\n prefs.moderationPrefs.mutedWords.map((word) => {\n word.actorTarget = word.actorTarget || 'all'\n return word\n })\n }\n } else if (predicate.isValidHiddenPostsPref(pref)) {\n prefs.moderationPrefs.hiddenPosts = pref.items\n } else if (predicate.isValidBskyAppStatePref(pref)) {\n prefs.bskyAppState.queuedNudges = pref.queuedNudges || []\n prefs.bskyAppState.activeProgressGuide = pref.activeProgressGuide\n prefs.bskyAppState.nuxs = pref.nuxs || []\n } else if (predicate.isValidPostInteractionSettingsPref(pref)) {\n prefs.postInteractionSettings.threadgateAllowRules =\n pref.threadgateAllowRules\n prefs.postInteractionSettings.postgateEmbeddingRules =\n pref.postgateEmbeddingRules\n } else if (predicate.isValidVerificationPrefs(pref)) {\n prefs.verificationPrefs = {\n hideBadges: pref.hideBadges,\n }\n }\n }\n\n /*\n * If `prefs.savedFeeds` is undefined, no `savedFeedsPrefV2` exists, which\n * means we want to try to migrate if needed.\n *\n * If v1 prefs exist, they will be migrated to v2.\n *\n * If no v1 prefs exist, the user is either new, or could be old and has\n * never edited their feeds.\n */\n if (prefs.savedFeeds == null) {\n const { saved, pinned } = prefs.feeds\n\n if (saved && pinned) {\n const uniqueMigratedSavedFeeds: Map<\n string,\n AppBskyActorDefs.SavedFeed\n > = new Map()\n\n // insert Following feed first\n uniqueMigratedSavedFeeds.set('timeline', {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n })\n\n // use pinned as source of truth for feed order\n for (const uri of pinned) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: true,\n })\n }\n\n for (const uri of saved) {\n if (!uniqueMigratedSavedFeeds.has(uri)) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: false,\n })\n }\n }\n\n prefs.savedFeeds = Array.from(uniqueMigratedSavedFeeds.values())\n } else {\n prefs.savedFeeds = [\n {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n },\n ]\n }\n\n // save to user preferences so this migration doesn't re-occur\n await this.overwriteSavedFeeds(prefs.savedFeeds)\n }\n\n // apply the label prefs\n for (const pref of labelPrefs) {\n if (pref.labelerDid) {\n const labeler = prefs.moderationPrefs.labelers.find(\n (labeler) => labeler.did === pref.labelerDid,\n )\n if (!labeler) continue\n labeler.labels[pref.label] = pref.visibility as LabelPreference\n } else {\n prefs.moderationPrefs.labels[pref.label] =\n pref.visibility as LabelPreference\n }\n }\n\n prefs.moderationPrefs.labels = remapLegacyLabels(\n prefs.moderationPrefs.labels,\n )\n\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(res.data.preferences))\n\n return prefs\n }\n\n async overwriteSavedFeeds(savedFeeds: AppBskyActorDefs.SavedFeed[]) {\n savedFeeds.forEach(validateSavedFeed)\n const uniqueSavedFeeds = new Map<string, AppBskyActorDefs.SavedFeed>()\n savedFeeds.forEach((feed) => {\n // remove and re-insert to preserve order\n if (uniqueSavedFeeds.has(feed.id)) {\n uniqueSavedFeeds.delete(feed.id)\n }\n uniqueSavedFeeds.set(feed.id, feed)\n })\n return this.updateSavedFeedsV2Preferences(() =>\n Array.from(uniqueSavedFeeds.values()),\n )\n }\n\n async updateSavedFeeds(savedFeedsToUpdate: AppBskyActorDefs.SavedFeed[]) {\n savedFeedsToUpdate.map(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => {\n return savedFeeds.map((savedFeed) => {\n const updatedVersion = savedFeedsToUpdate.find(\n (updated) => savedFeed.id === updated.id,\n )\n if (updatedVersion) {\n return {\n ...savedFeed,\n // only update pinned\n pinned: updatedVersion.pinned,\n }\n }\n return savedFeed\n })\n })\n }\n\n async addSavedFeeds(\n savedFeeds: Pick<AppBskyActorDefs.SavedFeed, 'type' | 'value' | 'pinned'>[],\n ) {\n const toSave: AppBskyActorDefs.SavedFeed[] = savedFeeds.map((f) => ({\n ...f,\n id: TID.nextStr(),\n }))\n toSave.forEach(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds,\n ...toSave,\n ])\n }\n\n async removeSavedFeeds(ids: string[]) {\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds.filter((feed) => !ids.find((id) => feed.id === id)),\n ])\n }\n\n /**\n * @deprecated use `overwriteSavedFeeds`\n */\n async setSavedFeeds(saved: string[], pinned: string[]) {\n return this.updateFeedPreferences(() => ({\n saved,\n pinned,\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds`\n */\n async addSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned,\n }))\n }\n\n /**\n * @deprecated use `removeSavedFeeds`\n */\n async removeSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: saved.filter((uri) => uri !== v),\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds` or `updateSavedFeeds`\n */\n async addPinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned: [...pinned.filter((uri) => uri !== v), v],\n }))\n }\n\n /**\n * @deprecated use `updateSavedFeeds` or `removeSavedFeeds`\n */\n async removePinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved,\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n async setAdultContentEnabled(v: boolean) {\n await this.updatePreferences((prefs) => {\n const adultContentPref = prefs.findLast(\n predicate.isValidAdultContentPref,\n ) || {\n $type: 'app.bsky.actor.defs#adultContentPref',\n enabled: v,\n }\n\n adultContentPref.enabled = v\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isAdultContentPref(pref))\n .concat(adultContentPref)\n })\n }\n\n async setContentLabelPref(\n key: string,\n value: LabelPreference,\n labelerDid?: string,\n ) {\n if (labelerDid) {\n ensureValidDid(labelerDid)\n }\n await this.updatePreferences((prefs) => {\n const labelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) => pref.label === key && pref.labelerDid === labelerDid,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: key,\n labelerDid,\n visibility: value,\n }\n\n labelPref.visibility = value\n\n let legacyLabelPref: $Typed<AppBskyActorDefs.ContentLabelPref> | undefined\n if (AppBskyActorDefs.isContentLabelPref(labelPref)) {\n // is global\n if (!labelPref.labelerDid) {\n const legacyLabelValue = {\n 'graphic-media': 'gore',\n porn: 'nsfw',\n sexual: 'suggestive',\n // Protect against using toString, hasOwnProperty, etc. as a label:\n __proto__: null,\n }[labelPref.label]\n\n // if it's a legacy label, double-write the legacy label\n if (legacyLabelValue) {\n legacyLabelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) =>\n pref.label === legacyLabelValue &&\n pref.labelerDid === undefined,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: legacyLabelValue,\n labelerDid: undefined,\n visibility: value,\n }\n\n legacyLabelPref!.visibility = value\n }\n }\n }\n\n return prefs\n .filter(\n (pref) =>\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(pref.label === key && pref.labelerDid === labelerDid),\n )\n .concat(labelPref)\n .filter((pref) => {\n if (!legacyLabelPref) return true\n return (\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(\n pref.label === legacyLabelPref.label &&\n pref.labelerDid === undefined\n )\n )\n })\n .concat(legacyLabelPref ? [legacyLabelPref] : [])\n })\n }\n\n async addLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n if (!labelersPref.labelers.some((labeler) => labeler.did === did)) {\n labelersPref.labelers.push({ did })\n }\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async removeLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n labelersPref.labelers = labelersPref.labelers.filter((l) => l.did !== did)\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async setPersonalDetails({\n birthDate,\n }: {\n birthDate: string | Date | undefined\n }) {\n await this.updatePreferences((prefs) => {\n const personalDetailsPref = prefs.findLast(\n predicate.isValidPersonalDetailsPref,\n ) || {\n $type: 'app.bsky.actor.defs#personalDetailsPref',\n }\n\n personalDetailsPref.birthDate =\n birthDate instanceof Date ? birthDate.toISOString() : birthDate\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isPersonalDetailsPref(pref))\n .concat(personalDetailsPref)\n })\n }\n\n async setFeedViewPrefs(feed: string, pref: Partial<BskyFeedViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs\n .filter(predicate.isValidFeedViewPref)\n .findLast((pref) => pref.feed === feed)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isFeedViewPref(p) || p.feed !== feed)\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#feedViewPref',\n feed,\n })\n })\n }\n\n async setThreadViewPrefs(pref: Partial<BskyThreadViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidThreadViewPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isThreadViewPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#threadViewPref',\n })\n })\n }\n\n async setInterestsPref(pref: Partial<BskyInterestsPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidInterestsPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isInterestsPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#interestsPref',\n })\n })\n }\n\n /**\n * Add a muted word to user preferences.\n */\n async addMutedWord(\n mutedWord: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >,\n ) {\n const sanitizedValue = sanitizeMutedWordValue(mutedWord.value)\n\n if (!sanitizedValue) return\n\n await this.updatePreferences((prefs) => {\n let mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n const newMutedWord: AppBskyActorDefs.MutedWord = {\n id: TID.nextStr(),\n value: sanitizedValue,\n targets: mutedWord.targets || [],\n actorTarget: mutedWord.actorTarget || 'all',\n expiresAt: mutedWord.expiresAt || undefined,\n }\n\n if (mutedWordsPref) {\n mutedWordsPref.items.push(newMutedWord)\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n } else {\n // if the pref doesn't exist, create it\n mutedWordsPref = {\n $type: 'app.bsky.actor.defs#mutedWordsPref',\n items: [newMutedWord],\n }\n }\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n })\n }\n\n /**\n * Convenience method to add muted words to user preferences\n */\n async addMutedWords(newMutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(newMutedWords.map((word) => this.addMutedWord(word)))\n }\n\n /**\n * @deprecated use `addMutedWords` or `addMutedWord` instead\n */\n async upsertMutedWords(\n mutedWords: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >[],\n ) {\n await this.addMutedWords(mutedWords)\n }\n\n /**\n * Update a muted word in user preferences.\n */\n async updateMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n mutedWordsPref.items = mutedWordsPref.items.map((existingItem) => {\n const match = matchMutedWord(existingItem, mutedWord)\n\n if (match) {\n const updated = {\n ...existingItem,\n ...mutedWord,\n }\n return {\n id: existingItem.id || TID.nextStr(),\n value:\n sanitizeMutedWordValue(updated.value) || existingItem.value,\n targets: updated.targets || [],\n actorTarget: updated.actorTarget || 'all',\n expiresAt: updated.expiresAt || undefined,\n }\n } else {\n return existingItem\n }\n })\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Remove a muted word from user preferences.\n */\n async removeMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n for (let i = 0; i < mutedWordsPref.items.length; i++) {\n const match = matchMutedWord(mutedWordsPref.items[i], mutedWord)\n\n if (match) {\n mutedWordsPref.items.splice(i, 1)\n break\n }\n }\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Convenience method to remove muted words from user preferences\n */\n async removeMutedWords(mutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(mutedWords.map((word) => this.removeMutedWord(word)))\n }\n\n async hidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'hide')\n }\n\n async unhidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'unhide')\n }\n\n async bskyAppQueueNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.queuedNudges = (pref.queuedNudges || []).concat(nudges)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppDismissNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n nudges = Array.isArray(nudges) ? nudges : [nudges]\n pref.queuedNudges = (pref.queuedNudges || []).filter(\n (nudge) => !nudges.includes(nudge),\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppSetActiveProgressGuide(\n guide: AppBskyActorDefs.BskyAppProgressGuide | undefined,\n ) {\n if (guide) {\n const result = AppBskyActorDefs.validateBskyAppProgressGuide(guide)\n if (!result.success) throw result.error\n }\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.activeProgressGuide = guide\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Insert or update a NUX in user prefs\n */\n async bskyAppUpsertNux(nux: Nux) {\n validateNux(nux)\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = pref.nuxs || []\n\n const existing = pref.nuxs?.find((n) => {\n return n.id === nux.id\n })\n\n let next: AppBskyActorDefs.Nux\n\n if (existing) {\n next = {\n id: existing.id,\n completed: nux.completed,\n data: nux.data,\n expiresAt: nux.expiresAt,\n }\n } else {\n next = nux\n }\n\n // remove duplicates and append\n pref.nuxs = pref.nuxs.filter((n) => n.id !== nux.id).concat(next)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Removes NUXs from user preferences.\n */\n async bskyAppRemoveNuxs(ids: string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = (pref.nuxs || []).filter((nux) => !ids.includes(nux.id))\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async setPostInteractionSettings(\n settings: AppBskyActorDefs.PostInteractionSettingsPref,\n ) {\n const result =\n AppBskyActorDefs.validatePostInteractionSettingsPref(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(\n predicate.isValidPostInteractionSettingsPref,\n ) || {\n $type: 'app.bsky.actor.defs#postInteractionSettingsPref',\n }\n\n /**\n * Matches handling of `threadgate.allow` where `undefined` means \"everyone\"\n */\n pref.threadgateAllowRules = settings.threadgateAllowRules\n pref.postgateEmbeddingRules = settings.postgateEmbeddingRules\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isPostInteractionSettingsPref(p))\n .concat(pref)\n })\n }\n\n async setVerificationPrefs(settings: AppBskyActorDefs.VerificationPrefs) {\n const result = AppBskyActorDefs.validateVerificationPrefs(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidVerificationPrefs) || {\n $type: 'app.bsky.actor.defs#verificationPrefs',\n hideBadges: false,\n }\n\n pref.hideBadges = settings.hideBadges\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isVerificationPrefs(p))\n .concat(pref)\n })\n }\n\n //- Private methods\n\n #prefsLock = new AwaitLock()\n\n /**\n * This function updates the preferences of a user and allows for a callback function to be executed\n * before the update.\n * @param cb - cb is a callback function that takes in a single parameter of type\n * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to\n * update the preferences of the user. The function is called with the current preferences as an\n * argument and if the callback returns false, the preferences are not updated.\n */\n private async updatePreferences(\n cb: (\n prefs: AppBskyActorDefs.Preferences,\n ) => AppBskyActorDefs.Preferences | false,\n ) {\n try {\n await this.#prefsLock.acquireAsync()\n const res = await this.app.bsky.actor.getPreferences({})\n const newPrefs = cb(res.data.preferences)\n if (newPrefs === false) {\n return res.data.preferences\n }\n await this.app.bsky.actor.putPreferences({\n preferences: newPrefs,\n })\n return newPrefs\n } finally {\n this.#prefsLock.release()\n }\n }\n\n private async updateHiddenPost(postUri: string, action: 'hide' | 'unhide') {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidHiddenPostsPref) || {\n $type: 'app.bsky.actor.defs#hiddenPostsPref',\n items: [],\n }\n\n const hiddenItems = new Set(pref.items)\n\n if (action === 'hide') hiddenItems.add(postUri)\n else hiddenItems.delete(postUri)\n\n pref.items = [...hiddenItems]\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isHiddenPostsPref(p))\n .concat(pref)\n })\n }\n\n /**\n * A helper specifically for updating feed preferences\n */\n private async updateFeedPreferences(\n cb: (\n saved: string[],\n pinned: string[],\n ) => { saved: string[]; pinned: string[] },\n ): Promise<{ saved: string[]; pinned: string[] }> {\n let res\n await this.updatePreferences((prefs) => {\n const feedsPref = prefs.findLast(predicate.isValidSavedFeedsPref) || {\n $type: 'app.bsky.actor.defs#savedFeedsPref',\n saved: [],\n pinned: [],\n }\n\n res = cb(feedsPref.saved, feedsPref.pinned)\n feedsPref.saved = res.saved\n feedsPref.pinned = res.pinned\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(feedsPref)\n })\n return res\n }\n\n private async updateSavedFeedsV2Preferences(\n cb: (\n savedFeedsPref: AppBskyActorDefs.SavedFeed[],\n ) => AppBskyActorDefs.SavedFeed[],\n ): Promise<AppBskyActorDefs.SavedFeed[]> {\n let maybeMutatedSavedFeeds: AppBskyActorDefs.SavedFeed[] = []\n\n await this.updatePreferences((prefs) => {\n const existingV2Pref = prefs.findLast(\n predicate.isValidSavedFeedsPrefV2,\n ) || {\n $type: 'app.bsky.actor.defs#savedFeedsPrefV2',\n items: [],\n }\n\n const newSavedFeeds = cb(existingV2Pref.items)\n\n // enforce ordering: pinned first, then saved\n existingV2Pref.items = [...newSavedFeeds].sort((a, b) =>\n // @NOTE: preserve order of items with the same pinned status\n a.pinned === b.pinned ? 0 : a.pinned ? -1 : 1,\n )\n\n // Store the return value\n maybeMutatedSavedFeeds = newSavedFeeds\n\n let updatedPrefs = prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPrefV2(pref))\n .concat(existingV2Pref)\n\n /*\n * If there's a v2 pref present, it means this account was migrated from v1\n * to v2. During the transition period, we double write v2 prefs back to\n * v1, but NOT the other way around.\n */\n let existingV1Pref = prefs.findLast(predicate.isValidSavedFeedsPref)\n if (existingV1Pref) {\n const { saved, pinned } = existingV1Pref\n const v2Compat = savedFeedsToUriArrays(\n // v1 only supports feeds and lists\n existingV2Pref.items.filter((i) => ['feed', 'list'].includes(i.type)),\n )\n existingV1Pref = {\n ...existingV1Pref,\n saved: Array.from(new Set([...saved, ...v2Compat.saved])),\n pinned: Array.from(new Set([...pinned, ...v2Compat.pinned])),\n }\n updatedPrefs = updatedPrefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(existingV1Pref)\n }\n\n return updatedPrefs\n })\n\n return maybeMutatedSavedFeeds\n }\n\n //#endregion\n}\n\n/**\n * Helper to transform the legacy content preferences.\n */\nfunction adjustLegacyContentLabelPref(\n pref: AppBskyActorDefs.ContentLabelPref,\n): AppBskyActorDefs.ContentLabelPref {\n let visibility = pref.visibility\n\n // adjust legacy values\n if (visibility === 'show') {\n visibility = 'ignore'\n }\n\n return { ...pref, visibility }\n}\n\n/**\n * Re-maps legacy labels to new labels on READ. Does not save these changes to\n * the user's preferences.\n */\nfunction remapLegacyLabels(\n labels: BskyPreferences['moderationPrefs']['labels'],\n) {\n const _labels = { ...labels }\n const legacyToNewMap: Record<string, string | undefined> = {\n gore: 'graphic-media',\n nsfw: 'porn',\n suggestive: 'sexual',\n }\n\n for (const labelName in _labels) {\n const newLabelName = legacyToNewMap[labelName]!\n if (newLabelName) {\n _labels[newLabelName] = _labels[labelName]\n }\n }\n\n return _labels\n}\n\n/**\n * A helper to get the currently enabled labelers from the full preferences array\n */\nfunction prefsArrayToLabelerDids(\n prefs: AppBskyActorDefs.Preferences,\n): string[] {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref)\n let dids: string[] = []\n if (labelersPref) {\n dids = (labelersPref as AppBskyActorDefs.LabelersPref).labelers.map(\n (labeler) => labeler.did,\n )\n }\n return dids\n}\n\nfunction isBskyPrefs(v: any): v is BskyPreferences {\n return (\n v &&\n typeof v === 'object' &&\n 'moderationPrefs' in v &&\n isModPrefs(v.moderationPrefs)\n )\n}\n\nfunction isModPrefs(v: any): v is ModerationPrefs {\n return v && typeof v === 'object' && 'labelers' in v\n}\n\nfunction migrateLegacyMutedWordsItems(items: AppBskyActorDefs.MutedWord[]) {\n return items.map((item) => ({\n ...item,\n id: item.id || TID.nextStr(),\n }))\n}\n\nfunction matchMutedWord(\n existingWord: AppBskyActorDefs.MutedWord,\n newWord: AppBskyActorDefs.MutedWord,\n): boolean {\n // id is undefined in legacy implementation\n const existingId = existingWord.id\n // prefer matching based on id\n const matchById = existingId && existingId === newWord.id\n // handle legacy case where id is not set\n const legacyMatchByValue = !existingId && existingWord.value === newWord.value\n\n return matchById || legacyMatchByValue\n}\n"]}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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","sourcesContent":["import AwaitLock from 'await-lock'\nimport { TID, retry } from '@atproto/common-web'\nimport { AtUri, ensureValidDid } from '@atproto/syntax'\nimport {\n FetchHandler,\n FetchHandlerOptions,\n XrpcClient,\n buildFetchHandler,\n} from '@atproto/xrpc'\nimport {\n AppBskyActorDefs,\n AppBskyActorProfile,\n AppBskyFeedPost,\n AppBskyLabelerDefs,\n AppNS,\n ChatNS,\n ComAtprotoRepoPutRecord,\n ComNS,\n ToolsNS,\n} from './client/index'\nimport { schemas } from './client/lexicons'\nimport { MutedWord, Nux } from './client/types/app/bsky/actor/defs'\nimport { $Typed, Un$Typed } from './client/util'\nimport { BSKY_LABELER_DID } from './const'\nimport { interpretLabelValueDefinitions } from './moderation'\nimport { DEFAULT_LABEL_SETTINGS } from './moderation/const/labels'\nimport {\n InterpretedLabelValueDefinition,\n LabelPreference,\n ModerationPrefs,\n} from './moderation/types'\nimport * as predicate from './predicate'\nimport { SessionManager } from './session-manager'\nimport {\n AtpAgentGlobalOpts,\n AtprotoProxy,\n AtprotoServiceType,\n BskyFeedViewPreference,\n BskyInterestsPreference,\n BskyPreferences,\n BskyThreadViewPreference,\n asAtprotoProxy,\n asDid,\n isDid,\n} from './types'\nimport {\n getSavedFeedType,\n sanitizeMutedWordValue,\n savedFeedsToUriArrays,\n validateNux,\n validateSavedFeed,\n} from './util'\n\nconst FEED_VIEW_PREF_DEFAULTS = {\n hideReplies: false,\n hideRepliesByUnfollowed: true,\n hideRepliesByLikeCount: 0,\n hideReposts: false,\n hideQuotePosts: false,\n}\n\nconst THREAD_VIEW_PREF_DEFAULTS = {\n sort: 'hotness',\n}\n\nexport type { FetchHandler }\n\n/**\n * An {@link Agent} is an {@link AtpBaseClient} with the following\n * additional features:\n * - AT Protocol labelers configuration utilities\n * - AT Protocol proxy configuration utilities\n * - Cloning utilities\n * - `app.bsky` syntactic sugar\n * - `com.atproto` syntactic sugar\n */\nexport class Agent extends XrpcClient {\n //#region Static configuration\n\n /**\n * The labelers to be used across all requests with the takedown capability\n */\n static appLabelers: readonly string[] = [BSKY_LABELER_DID]\n\n /**\n * Configures the Agent (or its sub classes) globally.\n */\n static configure(opts: AtpAgentGlobalOpts) {\n if (opts.appLabelers) {\n this.appLabelers = opts.appLabelers.map(asDid) // Validate & copy\n }\n }\n\n //#endregion\n\n com = new ComNS(this)\n app = new AppNS(this)\n chat = new ChatNS(this)\n tools = new ToolsNS(this)\n\n /** @deprecated use `this` instead */\n get xrpc(): XrpcClient {\n return this\n }\n\n readonly sessionManager: SessionManager\n\n constructor(options: SessionManager | FetchHandler | FetchHandlerOptions) {\n const sessionManager: SessionManager =\n typeof options === 'object' && 'fetchHandler' in options\n ? options\n : {\n did: undefined,\n fetchHandler: buildFetchHandler(options),\n }\n\n super((url, init) => {\n const headers = new Headers(init?.headers)\n\n if (this.proxy && !headers.has('atproto-proxy')) {\n headers.set('atproto-proxy', this.proxy)\n }\n\n // Merge the labelers header of this particular request with the app &\n // instance labelers.\n headers.set(\n 'atproto-accept-labelers',\n [\n ...this.appLabelers.map((l) => `${l};redact`),\n ...this.labelers,\n headers.get('atproto-accept-labelers')?.trim(),\n ]\n .filter(Boolean)\n .join(', '),\n )\n\n return this.sessionManager.fetchHandler(url, { ...init, headers })\n }, schemas)\n\n this.sessionManager = sessionManager\n }\n\n //#region Cloning utilities\n\n clone(): Agent {\n return this.copyInto(new Agent(this.sessionManager))\n }\n\n copyInto<T extends Agent>(inst: T): T {\n inst.configureLabelers(this.labelers)\n inst.configureProxy(this.proxy ?? null)\n inst.clearHeaders()\n for (const [key, value] of this.headers) inst.setHeader(key, value)\n return inst\n }\n\n withProxy(serviceType: AtprotoServiceType, did: string) {\n const inst = this.clone()\n inst.configureProxy(`${asDid(did)}#${serviceType}`)\n return inst as ReturnType<this['clone']>\n }\n\n //#endregion\n\n //#region ATPROTO labelers configuration utilities\n\n /**\n * The labelers statically configured on the class of the current instance.\n */\n get appLabelers() {\n return (this.constructor as typeof Agent).appLabelers\n }\n\n labelers: readonly string[] = []\n\n configureLabelers(labelerDids: readonly string[]) {\n this.labelers = labelerDids.map(asDid) // Validate & copy\n }\n\n /** @deprecated use {@link configureLabelers} instead */\n configureLabelersHeader(labelerDids: readonly string[]) {\n // Filtering non-did values for backwards compatibility\n this.configureLabelers(labelerDids.filter(isDid))\n }\n\n //#endregion\n\n //#region ATPROTO proxy configuration utilities\n\n proxy?: AtprotoProxy\n\n configureProxy(value: AtprotoProxy | null) {\n if (value === null) this.proxy = undefined\n else this.proxy = asAtprotoProxy(value)\n }\n\n /** @deprecated use {@link configureProxy} instead */\n configureProxyHeader(serviceType: AtprotoServiceType, did: string) {\n // Ignoring non-did values for backwards compatibility\n if (isDid(did)) this.configureProxy(`${did}#${serviceType}`)\n }\n\n //#endregion\n\n //#region Session management\n\n /**\n * Get the authenticated user's DID, if any.\n */\n get did() {\n return this.sessionManager.did\n }\n\n /** @deprecated Use {@link Agent.assertDid} instead */\n get accountDid() {\n return this.assertDid\n }\n\n /**\n * Get the authenticated user's DID, or throw an error if not authenticated.\n */\n get assertDid(): string {\n this.assertAuthenticated()\n return this.did\n }\n\n /**\n * Assert that the user is authenticated.\n */\n public assertAuthenticated(): asserts this is { did: string } {\n if (!this.did) throw new Error('Not logged in')\n }\n\n //#endregion\n\n /** @deprecated use \"this\" instead */\n get api() {\n return this\n }\n\n //#region \"com.atproto\" lexicon short hand methods\n\n /**\n * Upload a binary blob to the server\n */\n uploadBlob: typeof this.com.atproto.repo.uploadBlob = (data, opts) =>\n this.com.atproto.repo.uploadBlob(data, opts)\n\n /**\n * Resolve a handle to a DID\n */\n resolveHandle: typeof this.com.atproto.identity.resolveHandle = (\n params,\n opts,\n ) => this.com.atproto.identity.resolveHandle(params, opts)\n\n /**\n * Change the user's handle\n */\n updateHandle: typeof this.com.atproto.identity.updateHandle = (data, opts) =>\n this.com.atproto.identity.updateHandle(data, opts)\n\n /**\n * Create a moderation report\n */\n createModerationReport: typeof this.com.atproto.moderation.createReport = (\n data,\n opts,\n ) => this.com.atproto.moderation.createReport(data, opts)\n\n //#endregion\n\n //#region \"app.bsky\" lexicon short hand methods\n\n getTimeline: typeof this.app.bsky.feed.getTimeline = (params, opts) =>\n this.app.bsky.feed.getTimeline(params, opts)\n\n getAuthorFeed: typeof this.app.bsky.feed.getAuthorFeed = (params, opts) =>\n this.app.bsky.feed.getAuthorFeed(params, opts)\n\n getActorLikes: typeof this.app.bsky.feed.getActorLikes = (params, opts) =>\n this.app.bsky.feed.getActorLikes(params, opts)\n\n getPostThread: typeof this.app.bsky.feed.getPostThread = (params, opts) =>\n this.app.bsky.feed.getPostThread(params, opts)\n\n getPost: typeof this.app.bsky.feed.post.get = (params) =>\n this.app.bsky.feed.post.get(params)\n\n getPosts: typeof this.app.bsky.feed.getPosts = (params, opts) =>\n this.app.bsky.feed.getPosts(params, opts)\n\n getLikes: typeof this.app.bsky.feed.getLikes = (params, opts) =>\n this.app.bsky.feed.getLikes(params, opts)\n\n getRepostedBy: typeof this.app.bsky.feed.getRepostedBy = (params, opts) =>\n this.app.bsky.feed.getRepostedBy(params, opts)\n\n getFollows: typeof this.app.bsky.graph.getFollows = (params, opts) =>\n this.app.bsky.graph.getFollows(params, opts)\n\n getFollowers: typeof this.app.bsky.graph.getFollowers = (params, opts) =>\n this.app.bsky.graph.getFollowers(params, opts)\n\n getProfile: typeof this.app.bsky.actor.getProfile = (params, opts) =>\n this.app.bsky.actor.getProfile(params, opts)\n\n getProfiles: typeof this.app.bsky.actor.getProfiles = (params, opts) =>\n this.app.bsky.actor.getProfiles(params, opts)\n\n getSuggestions: typeof this.app.bsky.actor.getSuggestions = (params, opts) =>\n this.app.bsky.actor.getSuggestions(params, opts)\n\n searchActors: typeof this.app.bsky.actor.searchActors = (params, opts) =>\n this.app.bsky.actor.searchActors(params, opts)\n\n searchActorsTypeahead: typeof this.app.bsky.actor.searchActorsTypeahead = (\n params,\n opts,\n ) => this.app.bsky.actor.searchActorsTypeahead(params, opts)\n\n listNotifications: typeof this.app.bsky.notification.listNotifications = (\n params,\n opts,\n ) => this.app.bsky.notification.listNotifications(params, opts)\n\n countUnreadNotifications: typeof this.app.bsky.notification.getUnreadCount = (\n params,\n opts,\n ) => this.app.bsky.notification.getUnreadCount(params, opts)\n\n getLabelers: typeof this.app.bsky.labeler.getServices = (params, opts) =>\n this.app.bsky.labeler.getServices(params, opts)\n\n async getLabelDefinitions(\n prefs: BskyPreferences | ModerationPrefs | string[],\n ): Promise<Record<string, InterpretedLabelValueDefinition[]>> {\n // collect the labeler dids\n const dids: string[] = [...this.appLabelers]\n if (isBskyPrefs(prefs)) {\n dids.push(...prefs.moderationPrefs.labelers.map((l) => l.did))\n } else if (isModPrefs(prefs)) {\n dids.push(...prefs.labelers.map((l) => l.did))\n } else {\n dids.push(...prefs)\n }\n\n // fetch their definitions\n const labelers = await this.getLabelers({\n dids,\n detailed: true,\n })\n\n // assemble a map of labeler dids to the interpreted label value definitions\n const labelDefs = {}\n if (labelers.data) {\n for (const labeler of labelers.data\n .views as AppBskyLabelerDefs.LabelerViewDetailed[]) {\n labelDefs[labeler.creator.did] = interpretLabelValueDefinitions(labeler)\n }\n }\n\n return labelDefs\n }\n\n async post(\n record: Partial<AppBskyFeedPost.Record> &\n Omit<AppBskyFeedPost.Record, 'createdAt'>,\n ) {\n record.createdAt ||= new Date().toISOString()\n return this.app.bsky.feed.post.create(\n { repo: this.accountDid },\n record as AppBskyFeedPost.Record,\n )\n }\n\n async deletePost(postUri: string) {\n this.assertAuthenticated()\n\n const postUrip = new AtUri(postUri)\n return this.app.bsky.feed.post.delete({\n repo: postUrip.hostname,\n rkey: postUrip.rkey,\n })\n }\n\n async like(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.like.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteLike(likeUri: string) {\n this.assertAuthenticated()\n\n const likeUrip = new AtUri(likeUri)\n return this.app.bsky.feed.like.delete({\n repo: likeUrip.hostname,\n rkey: likeUrip.rkey,\n })\n }\n\n async repost(uri: string, cid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.feed.repost.create(\n { repo: this.accountDid },\n {\n subject: { uri, cid },\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteRepost(repostUri: string) {\n this.assertAuthenticated()\n\n const repostUrip = new AtUri(repostUri)\n return this.app.bsky.feed.repost.delete({\n repo: repostUrip.hostname,\n rkey: repostUrip.rkey,\n })\n }\n\n async follow(subjectDid: string, via?: { uri: string; cid: string }) {\n return this.app.bsky.graph.follow.create(\n { repo: this.accountDid },\n {\n subject: subjectDid,\n createdAt: new Date().toISOString(),\n via,\n },\n )\n }\n\n async deleteFollow(followUri: string) {\n this.assertAuthenticated()\n\n const followUrip = new AtUri(followUri)\n return this.app.bsky.graph.follow.delete({\n repo: followUrip.hostname,\n rkey: followUrip.rkey,\n })\n }\n\n /**\n * @note: Using this method will reset the whole profile record if it\n * previously contained invalid values (wrt to the profile lexicon).\n */\n async upsertProfile(\n updateFn: (\n existing: AppBskyActorProfile.Record | undefined,\n ) =>\n | Un$Typed<AppBskyActorProfile.Record>\n | Promise<Un$Typed<AppBskyActorProfile.Record>>,\n ): Promise<void> {\n const upsert = async () => {\n const repo = this.assertDid\n const collection = 'app.bsky.actor.profile'\n\n const existing = await this.com.atproto.repo\n .getRecord({ repo, collection, rkey: 'self' })\n .catch((_) => undefined)\n\n const existingRecord: AppBskyActorProfile.Record | undefined =\n existing && predicate.isValidProfile(existing.data.value)\n ? existing.data.value\n : undefined\n\n // run the update\n const updated = await updateFn(existingRecord)\n\n // validate the value returned by the update function\n const validation = AppBskyActorProfile.validateRecord({\n $type: collection,\n ...updated,\n })\n\n if (!validation.success) {\n throw validation.error\n }\n\n await this.com.atproto.repo.putRecord({\n repo,\n collection,\n rkey: 'self',\n record: validation.value,\n swapRecord: existing?.data.cid || null,\n })\n }\n\n return retry(upsert, {\n maxRetries: 5,\n retryable: (e) => e instanceof ComAtprotoRepoPutRecord.InvalidSwapError,\n })\n }\n\n async mute(actor: string) {\n return this.app.bsky.graph.muteActor({ actor })\n }\n\n async unmute(actor: string) {\n return this.app.bsky.graph.unmuteActor({ actor })\n }\n\n async muteModList(uri: string) {\n return this.app.bsky.graph.muteActorList({ list: uri })\n }\n\n async unmuteModList(uri: string) {\n return this.app.bsky.graph.unmuteActorList({ list: uri })\n }\n\n async blockModList(uri: string) {\n return this.app.bsky.graph.listblock.create(\n { repo: this.accountDid },\n {\n subject: uri,\n createdAt: new Date().toISOString(),\n },\n )\n }\n\n async unblockModList(uri: string) {\n const repo = this.accountDid\n\n const listInfo = await this.app.bsky.graph.getList({\n list: uri,\n limit: 1,\n })\n\n const blocked = listInfo.data.list.viewer?.blocked\n if (blocked) {\n const { rkey } = new AtUri(blocked)\n return this.app.bsky.graph.listblock.delete({\n repo,\n rkey,\n })\n }\n }\n\n async updateSeenNotifications(seenAt = new Date().toISOString()) {\n return this.app.bsky.notification.updateSeen({ seenAt })\n }\n\n async getPreferences(): Promise<BskyPreferences> {\n const prefs: BskyPreferences = {\n feeds: {\n saved: undefined,\n pinned: undefined,\n },\n // @ts-ignore populating below\n savedFeeds: undefined,\n feedViewPrefs: {\n home: {\n ...FEED_VIEW_PREF_DEFAULTS,\n },\n },\n threadViewPrefs: { ...THREAD_VIEW_PREF_DEFAULTS },\n moderationPrefs: {\n adultContentEnabled: false,\n labels: { ...DEFAULT_LABEL_SETTINGS },\n labelers: this.appLabelers.map((did) => ({\n did,\n labels: {},\n })),\n mutedWords: [],\n hiddenPosts: [],\n },\n birthDate: undefined,\n interests: {\n tags: [],\n },\n bskyAppState: {\n queuedNudges: [],\n activeProgressGuide: undefined,\n nuxs: [],\n },\n postInteractionSettings: {\n threadgateAllowRules: undefined,\n postgateEmbeddingRules: undefined,\n },\n verificationPrefs: {\n hideBadges: false,\n },\n }\n const res = await this.app.bsky.actor.getPreferences({})\n const labelPrefs: AppBskyActorDefs.ContentLabelPref[] = []\n for (const pref of res.data.preferences) {\n if (predicate.isValidAdultContentPref(pref)) {\n // adult content preferences\n prefs.moderationPrefs.adultContentEnabled = pref.enabled\n } else if (predicate.isValidContentLabelPref(pref)) {\n // content label preference\n const adjustedPref = adjustLegacyContentLabelPref(pref)\n labelPrefs.push(adjustedPref)\n } else if (predicate.isValidLabelersPref(pref)) {\n // labelers preferences\n prefs.moderationPrefs.labelers = this.appLabelers\n .map((did: string) => ({ did, labels: {} }))\n .concat(\n pref.labelers.map((labeler) => ({\n ...labeler,\n labels: {},\n })),\n )\n } else if (predicate.isValidSavedFeedsPrefV2(pref)) {\n prefs.savedFeeds = pref.items\n } else if (predicate.isValidSavedFeedsPref(pref)) {\n // saved and pinned feeds\n prefs.feeds.saved = pref.saved\n prefs.feeds.pinned = pref.pinned\n } else if (predicate.isValidPersonalDetailsPref(pref)) {\n // birth date (irl)\n if (pref.birthDate) {\n prefs.birthDate = new Date(pref.birthDate)\n }\n } else if (predicate.isValidDeclaredAgePref(pref)) {\n const { $type: _, ...declaredAgePref } = pref\n prefs.declaredAge = declaredAgePref\n } else if (predicate.isValidFeedViewPref(pref)) {\n // feed view preferences\n const { $type: _, feed, ...v } = pref\n prefs.feedViewPrefs[feed] = { ...FEED_VIEW_PREF_DEFAULTS, ...v }\n } else if (predicate.isValidThreadViewPref(pref)) {\n // thread view preferences\n const { $type: _, ...v } = pref\n prefs.threadViewPrefs = { ...prefs.threadViewPrefs, ...v }\n } else if (predicate.isValidInterestsPref(pref)) {\n const { $type: _, ...v } = pref\n prefs.interests = { ...prefs.interests, ...v }\n } else if (predicate.isValidMutedWordsPref(pref)) {\n prefs.moderationPrefs.mutedWords = pref.items\n\n if (prefs.moderationPrefs.mutedWords.length) {\n prefs.moderationPrefs.mutedWords =\n prefs.moderationPrefs.mutedWords.map((word) => {\n word.actorTarget = word.actorTarget || 'all'\n return word\n })\n }\n } else if (predicate.isValidHiddenPostsPref(pref)) {\n prefs.moderationPrefs.hiddenPosts = pref.items\n } else if (predicate.isValidBskyAppStatePref(pref)) {\n prefs.bskyAppState.queuedNudges = pref.queuedNudges || []\n prefs.bskyAppState.activeProgressGuide = pref.activeProgressGuide\n prefs.bskyAppState.nuxs = pref.nuxs || []\n } else if (predicate.isValidPostInteractionSettingsPref(pref)) {\n prefs.postInteractionSettings.threadgateAllowRules =\n pref.threadgateAllowRules\n prefs.postInteractionSettings.postgateEmbeddingRules =\n pref.postgateEmbeddingRules\n } else if (predicate.isValidVerificationPrefs(pref)) {\n prefs.verificationPrefs = {\n hideBadges: pref.hideBadges,\n }\n }\n }\n\n /*\n * If `prefs.savedFeeds` is undefined, no `savedFeedsPrefV2` exists, which\n * means we want to try to migrate if needed.\n *\n * If v1 prefs exist, they will be migrated to v2.\n *\n * If no v1 prefs exist, the user is either new, or could be old and has\n * never edited their feeds.\n */\n if (prefs.savedFeeds == null) {\n const { saved, pinned } = prefs.feeds\n\n if (saved && pinned) {\n const uniqueMigratedSavedFeeds: Map<\n string,\n AppBskyActorDefs.SavedFeed\n > = new Map()\n\n // insert Following feed first\n uniqueMigratedSavedFeeds.set('timeline', {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n })\n\n // use pinned as source of truth for feed order\n for (const uri of pinned) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: true,\n })\n }\n\n for (const uri of saved) {\n if (!uniqueMigratedSavedFeeds.has(uri)) {\n const type = getSavedFeedType(uri)\n // only want supported types\n if (type === 'unknown') continue\n uniqueMigratedSavedFeeds.set(uri, {\n id: TID.nextStr(),\n type,\n value: uri,\n pinned: false,\n })\n }\n }\n\n prefs.savedFeeds = Array.from(uniqueMigratedSavedFeeds.values())\n } else {\n prefs.savedFeeds = [\n {\n id: TID.nextStr(),\n type: 'timeline',\n value: 'following',\n pinned: true,\n },\n ]\n }\n\n // save to user preferences so this migration doesn't re-occur\n await this.overwriteSavedFeeds(prefs.savedFeeds)\n }\n\n // apply the label prefs\n for (const pref of labelPrefs) {\n if (pref.labelerDid) {\n const labeler = prefs.moderationPrefs.labelers.find(\n (labeler) => labeler.did === pref.labelerDid,\n )\n if (!labeler) continue\n labeler.labels[pref.label] = pref.visibility as LabelPreference\n } else {\n prefs.moderationPrefs.labels[pref.label] =\n pref.visibility as LabelPreference\n }\n }\n\n prefs.moderationPrefs.labels = remapLegacyLabels(\n prefs.moderationPrefs.labels,\n )\n\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(res.data.preferences))\n\n return prefs\n }\n\n async overwriteSavedFeeds(savedFeeds: AppBskyActorDefs.SavedFeed[]) {\n savedFeeds.forEach(validateSavedFeed)\n const uniqueSavedFeeds = new Map<string, AppBskyActorDefs.SavedFeed>()\n savedFeeds.forEach((feed) => {\n // remove and re-insert to preserve order\n if (uniqueSavedFeeds.has(feed.id)) {\n uniqueSavedFeeds.delete(feed.id)\n }\n uniqueSavedFeeds.set(feed.id, feed)\n })\n return this.updateSavedFeedsV2Preferences(() =>\n Array.from(uniqueSavedFeeds.values()),\n )\n }\n\n async updateSavedFeeds(savedFeedsToUpdate: AppBskyActorDefs.SavedFeed[]) {\n savedFeedsToUpdate.map(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => {\n return savedFeeds.map((savedFeed) => {\n const updatedVersion = savedFeedsToUpdate.find(\n (updated) => savedFeed.id === updated.id,\n )\n if (updatedVersion) {\n return {\n ...savedFeed,\n // only update pinned\n pinned: updatedVersion.pinned,\n }\n }\n return savedFeed\n })\n })\n }\n\n async addSavedFeeds(\n savedFeeds: Pick<AppBskyActorDefs.SavedFeed, 'type' | 'value' | 'pinned'>[],\n ) {\n const toSave: AppBskyActorDefs.SavedFeed[] = savedFeeds.map((f) => ({\n ...f,\n id: TID.nextStr(),\n }))\n toSave.forEach(validateSavedFeed)\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds,\n ...toSave,\n ])\n }\n\n async removeSavedFeeds(ids: string[]) {\n return this.updateSavedFeedsV2Preferences((savedFeeds) => [\n ...savedFeeds.filter((feed) => !ids.find((id) => feed.id === id)),\n ])\n }\n\n /**\n * @deprecated use `overwriteSavedFeeds`\n */\n async setSavedFeeds(saved: string[], pinned: string[]) {\n return this.updateFeedPreferences(() => ({\n saved,\n pinned,\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds`\n */\n async addSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned,\n }))\n }\n\n /**\n * @deprecated use `removeSavedFeeds`\n */\n async removeSavedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: saved.filter((uri) => uri !== v),\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n /**\n * @deprecated use `addSavedFeeds` or `updateSavedFeeds`\n */\n async addPinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved: [...saved.filter((uri) => uri !== v), v],\n pinned: [...pinned.filter((uri) => uri !== v), v],\n }))\n }\n\n /**\n * @deprecated use `updateSavedFeeds` or `removeSavedFeeds`\n */\n async removePinnedFeed(v: string) {\n return this.updateFeedPreferences((saved: string[], pinned: string[]) => ({\n saved,\n pinned: pinned.filter((uri) => uri !== v),\n }))\n }\n\n async setAdultContentEnabled(v: boolean) {\n await this.updatePreferences((prefs) => {\n const adultContentPref = prefs.findLast(\n predicate.isValidAdultContentPref,\n ) || {\n $type: 'app.bsky.actor.defs#adultContentPref',\n enabled: v,\n }\n\n adultContentPref.enabled = v\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isAdultContentPref(pref))\n .concat(adultContentPref)\n })\n }\n\n async setContentLabelPref(\n key: string,\n value: LabelPreference,\n labelerDid?: string,\n ) {\n if (labelerDid) {\n ensureValidDid(labelerDid)\n }\n await this.updatePreferences((prefs) => {\n const labelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) => pref.label === key && pref.labelerDid === labelerDid,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: key,\n labelerDid,\n visibility: value,\n }\n\n labelPref.visibility = value\n\n let legacyLabelPref: $Typed<AppBskyActorDefs.ContentLabelPref> | undefined\n if (AppBskyActorDefs.isContentLabelPref(labelPref)) {\n // is global\n if (!labelPref.labelerDid) {\n const legacyLabelValue = {\n 'graphic-media': 'gore',\n porn: 'nsfw',\n sexual: 'suggestive',\n // Protect against using toString, hasOwnProperty, etc. as a label:\n __proto__: null,\n }[labelPref.label]\n\n // if it's a legacy label, double-write the legacy label\n if (legacyLabelValue) {\n legacyLabelPref = prefs\n .filter(predicate.isValidContentLabelPref)\n .findLast(\n (pref) =>\n pref.label === legacyLabelValue &&\n pref.labelerDid === undefined,\n ) || {\n $type: 'app.bsky.actor.defs#contentLabelPref',\n label: legacyLabelValue,\n labelerDid: undefined,\n visibility: value,\n }\n\n legacyLabelPref!.visibility = value\n }\n }\n }\n\n return prefs\n .filter(\n (pref) =>\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(pref.label === key && pref.labelerDid === labelerDid),\n )\n .concat(labelPref)\n .filter((pref) => {\n if (!legacyLabelPref) return true\n return (\n !AppBskyActorDefs.isContentLabelPref(pref) ||\n !(\n pref.label === legacyLabelPref.label &&\n pref.labelerDid === undefined\n )\n )\n })\n .concat(legacyLabelPref ? [legacyLabelPref] : [])\n })\n }\n\n async addLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n if (!labelersPref.labelers.some((labeler) => labeler.did === did)) {\n labelersPref.labelers.push({ did })\n }\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async removeLabeler(did: string) {\n const prefs = await this.updatePreferences((prefs) => {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref) || {\n $type: 'app.bsky.actor.defs#labelersPref',\n labelers: [],\n }\n\n labelersPref.labelers = labelersPref.labelers.filter((l) => l.did !== did)\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isLabelersPref(pref))\n .concat(labelersPref)\n })\n // automatically configure the client\n this.configureLabelers(prefsArrayToLabelerDids(prefs))\n }\n\n async setPersonalDetails({\n birthDate,\n }: {\n birthDate: string | Date | undefined\n }) {\n await this.updatePreferences((prefs) => {\n const personalDetailsPref = prefs.findLast(\n predicate.isValidPersonalDetailsPref,\n ) || {\n $type: 'app.bsky.actor.defs#personalDetailsPref',\n }\n\n personalDetailsPref.birthDate =\n birthDate instanceof Date ? birthDate.toISOString() : birthDate\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isPersonalDetailsPref(pref))\n .concat(personalDetailsPref)\n })\n }\n\n async setFeedViewPrefs(feed: string, pref: Partial<BskyFeedViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs\n .filter(predicate.isValidFeedViewPref)\n .findLast((pref) => pref.feed === feed)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isFeedViewPref(p) || p.feed !== feed)\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#feedViewPref',\n feed,\n })\n })\n }\n\n async setThreadViewPrefs(pref: Partial<BskyThreadViewPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidThreadViewPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isThreadViewPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#threadViewPref',\n })\n })\n }\n\n async setInterestsPref(pref: Partial<BskyInterestsPreference>) {\n await this.updatePreferences((prefs) => {\n const existing = prefs.findLast(predicate.isValidInterestsPref)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isInterestsPref(p))\n .concat({\n ...existing,\n ...pref,\n $type: 'app.bsky.actor.defs#interestsPref',\n })\n })\n }\n\n /**\n * Add a muted word to user preferences.\n */\n async addMutedWord(\n mutedWord: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >,\n ) {\n const sanitizedValue = sanitizeMutedWordValue(mutedWord.value)\n\n if (!sanitizedValue) return\n\n await this.updatePreferences((prefs) => {\n let mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n const newMutedWord: AppBskyActorDefs.MutedWord = {\n id: TID.nextStr(),\n value: sanitizedValue,\n targets: mutedWord.targets || [],\n actorTarget: mutedWord.actorTarget || 'all',\n expiresAt: mutedWord.expiresAt || undefined,\n }\n\n if (mutedWordsPref) {\n mutedWordsPref.items.push(newMutedWord)\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n } else {\n // if the pref doesn't exist, create it\n mutedWordsPref = {\n $type: 'app.bsky.actor.defs#mutedWordsPref',\n items: [newMutedWord],\n }\n }\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n })\n }\n\n /**\n * Convenience method to add muted words to user preferences\n */\n async addMutedWords(newMutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(newMutedWords.map((word) => this.addMutedWord(word)))\n }\n\n /**\n * @deprecated use `addMutedWords` or `addMutedWord` instead\n */\n async upsertMutedWords(\n mutedWords: Pick<\n MutedWord,\n 'value' | 'targets' | 'actorTarget' | 'expiresAt'\n >[],\n ) {\n await this.addMutedWords(mutedWords)\n }\n\n /**\n * Update a muted word in user preferences.\n */\n async updateMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n mutedWordsPref.items = mutedWordsPref.items.map((existingItem) => {\n const match = matchMutedWord(existingItem, mutedWord)\n\n if (match) {\n const updated = {\n ...existingItem,\n ...mutedWord,\n }\n return {\n id: existingItem.id || TID.nextStr(),\n value:\n sanitizeMutedWordValue(updated.value) || existingItem.value,\n targets: updated.targets || [],\n actorTarget: updated.actorTarget || 'all',\n expiresAt: updated.expiresAt || undefined,\n }\n } else {\n return existingItem\n }\n })\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Remove a muted word from user preferences.\n */\n async removeMutedWord(mutedWord: AppBskyActorDefs.MutedWord) {\n await this.updatePreferences((prefs) => {\n const mutedWordsPref = prefs.findLast(predicate.isValidMutedWordsPref)\n\n if (mutedWordsPref) {\n for (let i = 0; i < mutedWordsPref.items.length; i++) {\n const match = matchMutedWord(mutedWordsPref.items[i], mutedWord)\n\n if (match) {\n mutedWordsPref.items.splice(i, 1)\n break\n }\n }\n\n /**\n * Migrate any old muted words that don't have an id\n */\n mutedWordsPref.items = migrateLegacyMutedWordsItems(\n mutedWordsPref.items,\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isMutedWordsPref(p))\n .concat(mutedWordsPref)\n }\n\n return prefs\n })\n }\n\n /**\n * Convenience method to remove muted words from user preferences\n */\n async removeMutedWords(mutedWords: AppBskyActorDefs.MutedWord[]) {\n await Promise.all(mutedWords.map((word) => this.removeMutedWord(word)))\n }\n\n async hidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'hide')\n }\n\n async unhidePost(postUri: string) {\n await this.updateHiddenPost(postUri, 'unhide')\n }\n\n async bskyAppQueueNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.queuedNudges = (pref.queuedNudges || []).concat(nudges)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppDismissNudges(nudges: string | string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n nudges = Array.isArray(nudges) ? nudges : [nudges]\n pref.queuedNudges = (pref.queuedNudges || []).filter(\n (nudge) => !nudges.includes(nudge),\n )\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async bskyAppSetActiveProgressGuide(\n guide: AppBskyActorDefs.BskyAppProgressGuide | undefined,\n ) {\n if (guide) {\n const result = AppBskyActorDefs.validateBskyAppProgressGuide(guide)\n if (!result.success) throw result.error\n }\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.activeProgressGuide = guide\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Insert or update a NUX in user prefs\n */\n async bskyAppUpsertNux(nux: Nux) {\n validateNux(nux)\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = pref.nuxs || []\n\n const existing = pref.nuxs?.find((n) => {\n return n.id === nux.id\n })\n\n let next: AppBskyActorDefs.Nux\n\n if (existing) {\n next = {\n id: existing.id,\n completed: nux.completed,\n data: nux.data,\n expiresAt: nux.expiresAt,\n }\n } else {\n next = nux\n }\n\n // remove duplicates and append\n pref.nuxs = pref.nuxs.filter((n) => n.id !== nux.id).concat(next)\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n /**\n * Removes NUXs from user preferences.\n */\n async bskyAppRemoveNuxs(ids: string[]) {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidBskyAppStatePref) || {\n $type: 'app.bsky.actor.defs#bskyAppStatePref',\n }\n\n pref.nuxs = (pref.nuxs || []).filter((nux) => !ids.includes(nux.id))\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isBskyAppStatePref(p))\n .concat(pref)\n })\n }\n\n async setPostInteractionSettings(\n settings: AppBskyActorDefs.PostInteractionSettingsPref,\n ) {\n const result =\n AppBskyActorDefs.validatePostInteractionSettingsPref(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(\n predicate.isValidPostInteractionSettingsPref,\n ) || {\n $type: 'app.bsky.actor.defs#postInteractionSettingsPref',\n }\n\n /**\n * Matches handling of `threadgate.allow` where `undefined` means \"everyone\"\n */\n pref.threadgateAllowRules = settings.threadgateAllowRules\n pref.postgateEmbeddingRules = settings.postgateEmbeddingRules\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isPostInteractionSettingsPref(p))\n .concat(pref)\n })\n }\n\n async setVerificationPrefs(settings: AppBskyActorDefs.VerificationPrefs) {\n const result = AppBskyActorDefs.validateVerificationPrefs(settings)\n // Fool-proofing (should not be needed because of type safety)\n if (!result.success) throw result.error\n\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidVerificationPrefs) || {\n $type: 'app.bsky.actor.defs#verificationPrefs',\n hideBadges: false,\n }\n\n pref.hideBadges = settings.hideBadges\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isVerificationPrefs(p))\n .concat(pref)\n })\n }\n\n //- Private methods\n\n #prefsLock = new AwaitLock()\n\n /**\n * This function updates the preferences of a user and allows for a callback function to be executed\n * before the update.\n * @param cb - cb is a callback function that takes in a single parameter of type\n * AppBskyActorDefs.Preferences and returns either a boolean or void. This callback function is used to\n * update the preferences of the user. The function is called with the current preferences as an\n * argument and if the callback returns false, the preferences are not updated.\n */\n private async updatePreferences(\n cb: (\n prefs: AppBskyActorDefs.Preferences,\n ) => AppBskyActorDefs.Preferences | false,\n ) {\n try {\n await this.#prefsLock.acquireAsync()\n const res = await this.app.bsky.actor.getPreferences({})\n const newPrefs = cb(res.data.preferences)\n if (newPrefs === false) {\n return res.data.preferences\n }\n await this.app.bsky.actor.putPreferences({\n preferences: newPrefs,\n })\n return newPrefs\n } finally {\n this.#prefsLock.release()\n }\n }\n\n private async updateHiddenPost(postUri: string, action: 'hide' | 'unhide') {\n await this.updatePreferences((prefs) => {\n const pref = prefs.findLast(predicate.isValidHiddenPostsPref) || {\n $type: 'app.bsky.actor.defs#hiddenPostsPref',\n items: [],\n }\n\n const hiddenItems = new Set(pref.items)\n\n if (action === 'hide') hiddenItems.add(postUri)\n else hiddenItems.delete(postUri)\n\n pref.items = [...hiddenItems]\n\n return prefs\n .filter((p) => !AppBskyActorDefs.isHiddenPostsPref(p))\n .concat(pref)\n })\n }\n\n /**\n * A helper specifically for updating feed preferences\n */\n private async updateFeedPreferences(\n cb: (\n saved: string[],\n pinned: string[],\n ) => { saved: string[]; pinned: string[] },\n ): Promise<{ saved: string[]; pinned: string[] }> {\n let res\n await this.updatePreferences((prefs) => {\n const feedsPref = prefs.findLast(predicate.isValidSavedFeedsPref) || {\n $type: 'app.bsky.actor.defs#savedFeedsPref',\n saved: [],\n pinned: [],\n }\n\n res = cb(feedsPref.saved, feedsPref.pinned)\n feedsPref.saved = res.saved\n feedsPref.pinned = res.pinned\n\n return prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(feedsPref)\n })\n return res\n }\n\n private async updateSavedFeedsV2Preferences(\n cb: (\n savedFeedsPref: AppBskyActorDefs.SavedFeed[],\n ) => AppBskyActorDefs.SavedFeed[],\n ): Promise<AppBskyActorDefs.SavedFeed[]> {\n let maybeMutatedSavedFeeds: AppBskyActorDefs.SavedFeed[] = []\n\n await this.updatePreferences((prefs) => {\n const existingV2Pref = prefs.findLast(\n predicate.isValidSavedFeedsPrefV2,\n ) || {\n $type: 'app.bsky.actor.defs#savedFeedsPrefV2',\n items: [],\n }\n\n const newSavedFeeds = cb(existingV2Pref.items)\n\n // enforce ordering: pinned first, then saved\n existingV2Pref.items = [...newSavedFeeds].sort((a, b) =>\n // @NOTE: preserve order of items with the same pinned status\n a.pinned === b.pinned ? 0 : a.pinned ? -1 : 1,\n )\n\n // Store the return value\n maybeMutatedSavedFeeds = newSavedFeeds\n\n let updatedPrefs = prefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPrefV2(pref))\n .concat(existingV2Pref)\n\n /*\n * If there's a v2 pref present, it means this account was migrated from v1\n * to v2. During the transition period, we double write v2 prefs back to\n * v1, but NOT the other way around.\n */\n let existingV1Pref = prefs.findLast(predicate.isValidSavedFeedsPref)\n if (existingV1Pref) {\n const { saved, pinned } = existingV1Pref\n const v2Compat = savedFeedsToUriArrays(\n // v1 only supports feeds and lists\n existingV2Pref.items.filter((i) => ['feed', 'list'].includes(i.type)),\n )\n existingV1Pref = {\n ...existingV1Pref,\n saved: Array.from(new Set([...saved, ...v2Compat.saved])),\n pinned: Array.from(new Set([...pinned, ...v2Compat.pinned])),\n }\n updatedPrefs = updatedPrefs\n .filter((pref) => !AppBskyActorDefs.isSavedFeedsPref(pref))\n .concat(existingV1Pref)\n }\n\n return updatedPrefs\n })\n\n return maybeMutatedSavedFeeds\n }\n\n //#endregion\n}\n\n/**\n * Helper to transform the legacy content preferences.\n */\nfunction adjustLegacyContentLabelPref(\n pref: AppBskyActorDefs.ContentLabelPref,\n): AppBskyActorDefs.ContentLabelPref {\n let visibility = pref.visibility\n\n // adjust legacy values\n if (visibility === 'show') {\n visibility = 'ignore'\n }\n\n return { ...pref, visibility }\n}\n\n/**\n * Re-maps legacy labels to new labels on READ. Does not save these changes to\n * the user's preferences.\n */\nfunction remapLegacyLabels(\n labels: BskyPreferences['moderationPrefs']['labels'],\n) {\n const _labels = { ...labels }\n const legacyToNewMap: Record<string, string | undefined> = {\n gore: 'graphic-media',\n nsfw: 'porn',\n suggestive: 'sexual',\n }\n\n for (const labelName in _labels) {\n const newLabelName = legacyToNewMap[labelName]!\n if (newLabelName) {\n _labels[newLabelName] = _labels[labelName]\n }\n }\n\n return _labels\n}\n\n/**\n * A helper to get the currently enabled labelers from the full preferences array\n */\nfunction prefsArrayToLabelerDids(\n prefs: AppBskyActorDefs.Preferences,\n): string[] {\n const labelersPref = prefs.findLast(predicate.isValidLabelersPref)\n let dids: string[] = []\n if (labelersPref) {\n dids = (labelersPref as AppBskyActorDefs.LabelersPref).labelers.map(\n (labeler) => labeler.did,\n )\n }\n return dids\n}\n\nfunction isBskyPrefs(v: any): v is BskyPreferences {\n return (\n v &&\n typeof v === 'object' &&\n 'moderationPrefs' in v &&\n isModPrefs(v.moderationPrefs)\n )\n}\n\nfunction isModPrefs(v: any): v is ModerationPrefs {\n return v && typeof v === 'object' && 'labelers' in v\n}\n\nfunction migrateLegacyMutedWordsItems(items: AppBskyActorDefs.MutedWord[]) {\n return items.map((item) => ({\n ...item,\n id: item.id || TID.nextStr(),\n }))\n}\n\nfunction matchMutedWord(\n existingWord: AppBskyActorDefs.MutedWord,\n newWord: AppBskyActorDefs.MutedWord,\n): boolean {\n // id is undefined in legacy implementation\n const existingId = existingWord.id\n // prefer matching based on id\n const matchById = existingId && existingId === newWord.id\n // handle legacy case where id is not set\n const legacyMatchByValue = !existingId && existingWord.value === newWord.value\n\n return matchById || legacyMatchByValue\n}\n"]}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ import * as AppBskyContactGetMatches from './types/app/bsky/contact/getMatches.j
|
|
|
23
23
|
import * as AppBskyContactGetSyncStatus from './types/app/bsky/contact/getSyncStatus.js';
|
|
24
24
|
import * as AppBskyContactImportContacts from './types/app/bsky/contact/importContacts.js';
|
|
25
25
|
import * as AppBskyContactRemoveData from './types/app/bsky/contact/removeData.js';
|
|
26
|
+
import * as AppBskyContactSendNotification from './types/app/bsky/contact/sendNotification.js';
|
|
26
27
|
import * as AppBskyContactStartPhoneVerification from './types/app/bsky/contact/startPhoneVerification.js';
|
|
27
28
|
import * as AppBskyContactVerifyPhone from './types/app/bsky/contact/verifyPhone.js';
|
|
28
29
|
import * as AppBskyFeedDescribeFeedGenerator from './types/app/bsky/feed/describeFeedGenerator.js';
|
|
@@ -294,6 +295,7 @@ export * as AppBskyContactGetMatches from './types/app/bsky/contact/getMatches.j
|
|
|
294
295
|
export * as AppBskyContactGetSyncStatus from './types/app/bsky/contact/getSyncStatus.js';
|
|
295
296
|
export * as AppBskyContactImportContacts from './types/app/bsky/contact/importContacts.js';
|
|
296
297
|
export * as AppBskyContactRemoveData from './types/app/bsky/contact/removeData.js';
|
|
298
|
+
export * as AppBskyContactSendNotification from './types/app/bsky/contact/sendNotification.js';
|
|
297
299
|
export * as AppBskyContactStartPhoneVerification from './types/app/bsky/contact/startPhoneVerification.js';
|
|
298
300
|
export * as AppBskyContactVerifyPhone from './types/app/bsky/contact/verifyPhone.js';
|
|
299
301
|
export * as AppBskyEmbedDefs from './types/app/bsky/embed/defs.js';
|
|
@@ -780,6 +782,7 @@ export declare class AppBskyContactNS {
|
|
|
780
782
|
getSyncStatus(params?: AppBskyContactGetSyncStatus.QueryParams, opts?: AppBskyContactGetSyncStatus.CallOptions): Promise<AppBskyContactGetSyncStatus.Response>;
|
|
781
783
|
importContacts(data?: AppBskyContactImportContacts.InputSchema, opts?: AppBskyContactImportContacts.CallOptions): Promise<AppBskyContactImportContacts.Response>;
|
|
782
784
|
removeData(data?: AppBskyContactRemoveData.InputSchema, opts?: AppBskyContactRemoveData.CallOptions): Promise<AppBskyContactRemoveData.Response>;
|
|
785
|
+
sendNotification(data?: AppBskyContactSendNotification.InputSchema, opts?: AppBskyContactSendNotification.CallOptions): Promise<AppBskyContactSendNotification.Response>;
|
|
783
786
|
startPhoneVerification(data?: AppBskyContactStartPhoneVerification.InputSchema, opts?: AppBskyContactStartPhoneVerification.CallOptions): Promise<AppBskyContactStartPhoneVerification.Response>;
|
|
784
787
|
verifyPhone(data?: AppBskyContactVerifyPhone.InputSchema, opts?: AppBskyContactVerifyPhone.CallOptions): Promise<AppBskyContactVerifyPhone.Response>;
|
|
785
788
|
}
|