UNPKG

sms-ir-api

Version:

SMS.IR API client for JS/TS/ESM/Node.js

1 lines 18.3 kB
{"version":3,"file":"smsir.mjs","sources":["../src/smsir.ts"],"sourcesContent":["// import axios, { type AxiosRequestConfig } from \"axios\";\r\n\r\nconst DefaultPageSize = 100;\r\n\r\ntype ILineNumber = string | number;\r\ntype IParameter = {\r\n\tname: string;\r\n\tvalue: string;\r\n};\r\n\r\ninterface Data_Base {\r\n\tstatus: number;\r\n\tmessage: string;\r\n\tdata: any;\r\n}\r\n\r\ninterface Data_SendBulk extends Data_Base {\r\n\tdata: {\r\n\t\tpackId: string;\r\n\t\tmessageIds: number[];\r\n\t\tcost: number;\r\n\t};\r\n}\r\ninterface Data_SendWithUsername extends Data_Verify {}\r\ninterface Data_LikeToLike extends Data_SendBulk {}\r\ninterface Data_DeleteScheduled extends Data_Base {\r\n\tdata: {\r\n\t\treturnedCreditCount: number;\r\n\t\tsmsCount: number;\r\n\t};\r\n}\r\ninterface Data_Verify extends Data_Base {\r\n\tdata: {\r\n\t\tmessageId: number;\r\n\t\tcost: number;\r\n\t};\r\n}\r\n\r\ninterface ReportSingle {\r\n\tmessageId: number;\r\n\tmobile: string;\r\n\tmessageText: string;\r\n\tsendDateTime: number;\r\n\tlineNumber: ILineNumber;\r\n\tcost: number;\r\n\tdeliveryState: number;\r\n\tdeliveryDateTime: number;\r\n}\r\ninterface ReportPack {\r\n\tpackId: string;\r\n\trecipientCount: number;\r\n\tcreationDateTime: number;\r\n}\r\ninterface ReceiveSingle {\r\n\tmessageText: string;\r\n\tnumber: ILineNumber;\r\n\tmobile: string;\r\n\treceivedDateTime: number;\r\n}\r\ninterface Data_Report_Message extends Data_Base {\r\n\tdata: ReportSingle;\r\n}\r\ninterface Data_Report_TodayPacks extends Data_Base {\r\n\tdata: ReportPack[];\r\n}\r\n\r\ninterface Data_Report_Messages extends Data_Base {\r\n\tdata: ReportSingle[];\r\n}\r\ninterface Data_Report_Today extends Data_Report_Messages {}\r\ninterface Data_Report_Pack extends Data_Report_Messages {}\r\ninterface Data_Report_Archive extends Data_Report_Messages {}\r\n\r\ninterface Data_Receive_Messages extends Data_Base {\r\n\tdata: ReceiveSingle[];\r\n}\r\ninterface Data_Receive_Latest extends Data_Receive_Messages {}\r\ninterface Data_Receive_Today extends Data_Receive_Messages {}\r\ninterface Data_Receive_Archive extends Data_Receive_Messages {}\r\n\r\ninterface Data_Credit extends Data_Base {\r\n\tdata: number;\r\n}\r\ninterface Data_Lines extends Data_Base {\r\n\tdata: ILineNumber[];\r\n}\r\n\r\n/**\r\n * Class representing the SMS.ir API\r\n * @author Shahab Movahhedi\r\n * @see {@link https://shmovahhedi.com Shahab Movahhedi's Website}\r\n * @see {@link https://github.com/movahhedi/sms-ir-node sms-ir-node's Repository}\r\n * @license MIT\r\n */\r\nexport class Smsir {\r\n\tprivate ApiKey: string;\r\n\tprivate LineNumber: ILineNumber;\r\n\tprivate Username: string | null;\r\n\tpublic readonly ApiUrl = \"https://api.sms.ir/v1\";\r\n\r\n\t/**\r\n\t * Create a new instance of the Smsir class\r\n\t * @param {string} ApiKey - The API key for the SMS.ir account\r\n\t * @param {number} LineNumber - The line number to use for sending messages\r\n\t * @param {string} [Username=null] - The username for the SMS.ir account\r\n\t */\r\n\tconstructor(ApiKey: string, LineNumber: ILineNumber, Username: string | null = null) {\r\n\t\tthis.ApiKey = ApiKey;\r\n\t\tthis.LineNumber = LineNumber;\r\n\t\tthis.Username = Username;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t/**\r\n\t * Make an API request to the SMS.ir API\r\n\t * @private\r\n\t * @param {string} urlSuffix - The URL suffix for the API endpoint\r\n\t * @param {(\"GET\"|\"POST\"|\"DELETE\")} [method=\"GET\"] - The HTTP method to use for the request\r\n\t * @param {object|null} [data=null] - The data to send with the request\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tprivate async Api(\r\n\t\turlSuffix: string,\r\n\t\tmethod: \"GET\" | \"POST\" | \"DELETE\" = \"GET\",\r\n\t\tdata: object | undefined = undefined,\r\n\t): Promise<Data_Base> {\r\n\t\tconst response = await fetch(`${this.ApiUrl}/${urlSuffix}`, {\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json\",\r\n\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t\"X-API-KEY\": this.ApiKey,\r\n\t\t\t},\r\n\t\t\tmethod,\r\n\t\t\tbody: data && JSON.stringify(data),\r\n\t\t});\r\n\t\tconst responseBody = await response.json();\r\n\r\n\t\treturn responseBody?.data;\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to a single recipient\r\n\t * @param {string} MessageText - The text of the message to send\r\n\t * @param {string} Mobile - The mobile number of the recipient\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {number} [LineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync Send(\r\n\t\tMessageText: string,\r\n\t\tMobile: string,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tLineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_SendBulk> {\r\n\t\treturn this.SendBulk(MessageText, [Mobile], SendDateTime, LineNumber);\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to a single recipient (The username for the SMS.ir account is required)\r\n\t * @param {string} messageText - The text of the message to send\r\n\t * @param {string} mobile - The mobile number of the recipient\r\n\t * @param {ILineNumber} [lineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @param {string} [username=this.Username] - The username for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendWithUsername(\r\n\t\tmessageText: string,\r\n\t\tmobile: string,\r\n\t\tlineNumber: ILineNumber = this.LineNumber,\r\n\t\tusername: string | null = this.Username\r\n\t): Promise<Data_SendWithUsername> {\r\n\t\treturn this.Api(\r\n\t\t\t\"send?\" +\r\n\t\t\t\tnew URLSearchParams({\r\n\t\t\t\t\tusername: username ?? \"\",\r\n\t\t\t\t\tpassword: this.ApiKey,\r\n\t\t\t\t\tline: \"\" + lineNumber,\r\n\t\t\t\t\tmobile,\r\n\t\t\t\t\ttext: messageText,\r\n\t\t\t\t}),\r\n\t\t\t\"GET\",\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Send a single SMS message to multiple recipients\r\n\t * @param {string} MessageText - The text of the message to send\r\n\t * @param {Array<string>} Mobiles - An array of mobile numbers of the recipients\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {ILineNumber} [lineNumber=this.LineNumber] - The line number to use for sending the message\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendBulk(\r\n\t\tMessageText: string,\r\n\t\tMobiles: Array<string>,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tlineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_SendBulk> {\r\n\t\treturn this.Api(\"send/bulk\", \"POST\", {\r\n\t\t\tlineNumber,\r\n\t\t\tMessageText,\r\n\t\t\tMobiles,\r\n\t\t\tSendDateTime,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send multiple SMS messages to multiple recipients (one message per recipient)\r\n\t * @param {string} MessageTexts - The text of the messages to send\r\n\t * @param {Array<string>} Mobiles - An array of mobile numbers of the recipients\r\n\t * @param {number|null} [SendDateTime=null] - The Unix timestamp of when to send the message (null for immediate sending)\r\n\t * @param {ILineNumber|null} [lineNumber=null] - The line number to use for sending the message (null for line number)\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendLikeToLike(\r\n\t\tMessageTexts: string,\r\n\t\tMobiles: Array<string>,\r\n\t\tSendDateTime: number | null = null,\r\n\t\tlineNumber: ILineNumber = this.LineNumber\r\n\t): Promise<Data_LikeToLike> {\r\n\t\treturn this.Api(\"send/likeToLike\", \"POST\", {\r\n\t\t\tlineNumber,\r\n\t\t\tMessageTexts,\r\n\t\t\tMobiles,\r\n\t\t\tSendDateTime,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Delete a scheduled SMS message\r\n\t * @param {number} PackId - The ID of the scheduled message pack to delete\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync DeleteScheduled(PackId: number): Promise<Data_DeleteScheduled> {\r\n\t\treturn this.Api(`send/scheduled/${PackId}`, \"DELETE\");\r\n\t}\r\n\r\n\t/**\r\n\t * Send a verification code via SMS\r\n\t * @param {string} Mobile - The mobile number of the recipient\r\n\t * @param {number} TemplateId - The ID of the verification code template to use\r\n\t * @param {} Parameters - An array of parameters to use in the verification code template\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync SendVerifyCode(Mobile: string, TemplateId: number, Parameters: IParameter[]): Promise<Data_Verify> {\r\n\t\treturn this.Api(\"send/verify\", \"POST\", {\r\n\t\t\tMobile,\r\n\t\t\tTemplateId,\r\n\t\t\tParameters,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on a specific sent SMS message\r\n\t * @param {number} MessageId - The ID of the sent message to get a report on\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportMessage(MessageId: number): Promise<Data_Verify> {\r\n\t\treturn this.Api(`send/${MessageId}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's sent SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportTodayPacks(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Report_TodayPacks> {\r\n\t\treturn this.Api(\"send/pack\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on a specific sent SMS message pack\r\n\t * @param {number} PackId - The ID of the sent message pack to get a report on\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportPack(PackId: number): Promise<Data_Report_Pack> {\r\n\t\treturn this.Api(`send/pack/${PackId}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's sent SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportToday(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Report_Today> {\r\n\t\treturn this.Api(\"send/live\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on archived sent SMS messages\r\n\t * @param {null} [fromDate=null] - The start date to get results for (null for no start date)\r\n\t * @param {null} [toDate=null] - The end date to get results for (null for no end date)\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportArchived(\r\n\t\tfromDate: number | null = null,\r\n\t\ttoDate: number | null = null,\r\n\t\tpageSize: number = DefaultPageSize,\r\n\t\tpageNumber: number = 1\r\n\t): Promise<Data_Report_Archive> {\r\n\t\treturn this.Api(\"send/archive\", \"GET\", {\r\n\t\t\tfromDate,\r\n\t\t\ttoDate,\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on the latest received SMS messages\r\n\t * @param {number} [count=DefaultPageSize] - The number of results to return\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportLatestReceived(count: number = DefaultPageSize): Promise<Data_Receive_Latest> {\r\n\t\treturn this.Api(\"receive/latest\", \"GET\", { count });\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on today's received SMS messages\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportTodayReceived(pageSize: number = DefaultPageSize, pageNumber: number = 1): Promise<Data_Receive_Today> {\r\n\t\treturn this.Api(\"receive/live\", \"GET\", {\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get a report on archived received SMS messages\r\n\t * @param {null} [fromDate=null] - The start date to get results for (null for no start date)\r\n\t * @param {null} [toDate=null] - The end date to get results for (null for no end date)\r\n\t * @param {number} [pageSize=DefaultPageSize] - The number of results to return per page\r\n\t * @param {number} [pageNumber=1] - The page number to return results for\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync ReportArchivedReceived(\r\n\t\tfromDate: number | null = null,\r\n\t\ttoDate: number | null = null,\r\n\t\tpageSize: number = DefaultPageSize,\r\n\t\tpageNumber: number = 1\r\n\t): Promise<Data_Receive_Archive> {\r\n\t\treturn this.Api(\"receive/archive\", \"GET\", {\r\n\t\t\tfromDate,\r\n\t\t\ttoDate,\r\n\t\t\tpageSize,\r\n\t\t\tpageNumber,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Get the remaining credit balance for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync GetCredit(): Promise<Data_Credit> {\r\n\t\treturn this.Api(\"credit\");\r\n\t}\r\n\r\n\t/**\r\n\t * Get a list of available line numbers for the SMS.ir account\r\n\t * @returns {Promise} The response from the API\r\n\t */\r\n\tasync GetLineNumbers(): Promise<Data_Lines> {\r\n\t\treturn this.Api(\"line\");\r\n\t}\r\n}\r\n"],"names":["DefaultPageSize","Smsir","ApiKey","LineNumber","Username","this","ApiUrl","_proto","prototype","Api","urlSuffix","method","data","undefined","Promise","resolve","fetch","headers","Accept","body","JSON","stringify","then","response","json","responseBody","e","reject","Send","MessageText","Mobile","SendDateTime","SendBulk","SendWithUsername","messageText","mobile","lineNumber","username","_this3","URLSearchParams","password","line","text","Mobiles","SendLikeToLike","MessageTexts","DeleteScheduled","PackId","SendVerifyCode","TemplateId","Parameters","ReportMessage","MessageId","ReportTodayPacks","pageSize","pageNumber","ReportPack","ReportToday","ReportArchived","fromDate","toDate","ReportLatestReceived","count","ReportTodayReceived","ReportArchivedReceived","GetCredit","GetLineNumbers"],"mappings":"AAEA,IAAMA,EAAkB,IA4FXC,eAYZ,WAAA,SAAAA,EAAYC,EAAgBC,EAAyBC,GAIpD,YAJoDA,IAAAA,IAAAA,EAA0B,MAAIC,KAX3EH,YAAM,EAAAG,KACNF,gBAAU,EAAAE,KACVD,cAAQ,EAAAC,KACAC,OAAS,wBASxBD,KAAKH,OAASA,EACdG,KAAKF,WAAaA,EAClBE,KAAKD,SAAWA,EAEjBC,IAAA,CAAC,IAAAE,EAAAN,EAAAO,iBAAAD,EAUaE,IAAG,SAChBC,EACAC,EACAC,QADAD,IAAAA,IAAAA,EAAoC,YACpCC,IAAAA,IAAAA,OAA2BC,GAAS,IAEAC,OAAAA,QAAAC,QAAbC,MAASX,KAAKC,OAAM,IAAII,EAAa,CAC3DO,QAAS,CACRC,OAAQ,mBACR,eAAgB,mBAChB,YAJ8Bb,KAIZH,QAEnBS,OAAAA,EACAQ,KAAMP,GAAQQ,KAAKC,UAAUT,MAC5BU,KARIC,SAAAA,GAAQT,OAAAA,QAAAC,QASaQ,EAASC,QAAMF,cAApCG,GAEN,OAAmB,MAAZA,OAAY,EAAZA,EAAcb,IAAK,EAC3B,EAAA,CAAC,MAAAc,GAAAZ,OAAAA,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAUKqB,KAAI,SACTC,EACAC,EACAC,EACA5B,QADA4B,IAAAA,IAAAA,EAA8B,MACW,IAEzC,YAF0BlB,IAA1BV,IAAAA,EAA0BE,KAAKF,YAE/BW,QAAAC,QAF0BV,KAEd2B,SAASH,EAAa,CAACC,GAASC,EAAc5B,GAC3D,CAAC,MAAAuB,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAUK0B,0BACLC,EACAC,EACAC,EACAC,GAA0B,IAAaC,IAAAA,EADbjC,KAG1B,YAH0BQ,IAA1BuB,IAAAA,EAA0BE,EAAKnC,iBACLU,IAA1BwB,IAAAA,EAA0BC,EAAKlC,UAE/BU,QAAAC,QAAOuB,EAAK7B,IACX,QACC,IAAI8B,gBAAgB,CACnBF,SAAUA,MAAAA,EAAAA,EAAY,GACtBG,SAAUF,EAAKpC,OACfuC,KAAM,GAAKL,EACXD,OAAAA,EACAO,KAAMR,IAER,OAEF,CAAC,MAAAR,UAAAZ,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAUKyB,SAAA,SACLH,EACAc,EACAZ,EACAK,QADAL,IAAAA,IAAAA,EAA8B,UAG9B,YAF0BlB,IAA1BuB,IAAAA,EAA0B/B,KAAKF,YAE/BW,QAAAC,QAF0BV,KAEdI,IAAI,YAAa,OAAQ,CACpC2B,WAAAA,EACAP,YAAAA,EACAc,QAAAA,EACAZ,aAAAA,IAEF,CAAC,MAAAL,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAUKqC,eAAA,SACLC,EACAF,EACAZ,EACAK,QADAL,IAAAA,IAAAA,EAA8B,MACW,IAEzC,YAF0BlB,IAA1BuB,IAAAA,EAA0B/B,KAAKF,YAE/BW,QAAAC,QAF0BV,KAEdI,IAAI,kBAAmB,OAAQ,CAC1C2B,WAAAA,EACAS,aAAAA,EACAF,QAAAA,EACAZ,aAAAA,IAEF,CAAC,MAAAL,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAOKuC,gBAAA,SAAgBC,GAAc,IACnC,OAAAjC,QAAAC,QAAOV,KAAKI,IAAG,kBAAmBsC,EAAU,UAC7C,CAAC,MAAArB,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EASKyC,eAAA,SAAelB,EAAgBmB,EAAoBC,GAAwB,IAChF,OAAApC,QAAAC,QAAOV,KAAKI,IAAI,cAAe,OAAQ,CACtCqB,OAAAA,EACAmB,WAAAA,EACAC,WAAAA,IAEF,CAAC,MAAAxB,UAAAZ,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAOK4C,cAAA,SAAcC,GAAiB,IACpC,OAAAtC,QAAAC,QAAOV,KAAKI,IAAG,QAAS2C,GACzB,CAAC,MAAA1B,UAAAZ,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAQK8C,iBAAA,SAAiBC,EAAoCC,QAApCD,IAAAA,IAAAA,EAAmBtD,QAAiBuD,IAAAA,IAAAA,EAAqB,GAAC,IAChF,OAAAzC,QAAAC,QAAOV,KAAKI,IAAI,YAAa,MAAO,CACnC6C,SAAAA,EACAC,WAAAA,IAEF,CAAC,MAAA7B,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAOKiD,oBAAWT,GAAc,IAC9B,OAAAjC,QAAAC,QAAOV,KAAKI,IAAiBsC,aAAAA,GAC9B,CAAC,MAAArB,GAAA,OAAAZ,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAQKkD,YAAA,SAAYH,EAAoCC,QAApCD,IAAAA,IAAAA,EAAmBtD,QAAiBuD,IAAAA,IAAAA,EAAqB,GAAC,IAC3E,OAAAzC,QAAAC,QAAOV,KAAKI,IAAI,YAAa,MAAO,CACnC6C,SAAAA,EACAC,WAAAA,IAEF,CAAC,MAAA7B,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAUKmD,wBACLC,EACAC,EACAN,EACAC,QAHA,IAAAI,IAAAA,EAA0B,WAC1BC,IAAAA,IAAAA,EAAwB,WACxBN,IAAAA,IAAAA,EAAmBtD,YACnBuD,IAAAA,EAAqB,GAAC,IAEtB,OAAAzC,QAAAC,QAAOV,KAAKI,IAAI,eAAgB,MAAO,CACtCkD,SAAAA,EACAC,OAAAA,EACAN,SAAAA,EACAC,WAAAA,IAEF,CAAC,MAAA7B,GAAAZ,OAAAA,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAOKsD,qBAAoB,SAACC,QAAA,IAAAA,IAAAA,EAAgB9D,GAAe,IACzD,OAAAc,QAAAC,QAAOV,KAAKI,IAAI,iBAAkB,MAAO,CAAEqD,MAAAA,IAC5C,CAAC,MAAApC,GAAAZ,OAAAA,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAQKwD,oBAAmB,SAACT,EAAoCC,YAApCD,IAAAA,EAAmBtD,YAAiBuD,IAAAA,EAAqB,GAAC,IACnF,OAAAzC,QAAAC,QAAOV,KAAKI,IAAI,eAAgB,MAAO,CACtC6C,SAAAA,EACAC,WAAAA,IAEF,CAAC,MAAA7B,UAAAZ,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAUKyD,uBAAA,SACLL,EACAC,EACAN,EACAC,QAHAI,IAAAA,IAAAA,EAA0B,WACF,IAAxBC,IAAAA,EAAwB,WACxB,IAAAN,IAAAA,EAAmBtD,QACnBuD,IAAAA,IAAAA,EAAqB,OAErB,OAAAzC,QAAAC,QAAOV,KAAKI,IAAI,kBAAmB,MAAO,CACzCkD,SAAAA,EACAC,OAAAA,EACAN,SAAAA,EACAC,WAAAA,IAEF,CAAC,MAAA7B,GAAAZ,OAAAA,QAAAa,OAAAD,EAAA,CAAA,EAAAnB,EAMK0D,UAAS,WAAA,IACd,OAAAnD,QAAAC,QAAOV,KAAKI,IAAI,UACjB,CAAC,MAAAiB,GAAA,OAAAZ,QAAAa,OAAAD,EAAAnB,CAAAA,EAAAA,EAMK2D,eAAA,eACL,OAAApD,QAAAC,QAAOV,KAAKI,IAAI,QACjB,CAAC,MAAAiB,GAAAZ,OAAAA,QAAAa,OAAAD,KAAAzB,CAAA,CA9QD"}