UNPKG

@finbourne/lusid-sdk-angular8

Version:

An angular (8+) SDK for secure access to the LUSID® by FINBOURNE web API

250 lines 96.6 kB
/** * LUSID API * # Introduction This page documents the [LUSID APIs](../../../api/swagger), which allows authorised clients to query and update their data within the LUSID platform. SDKs to interact with the LUSID APIs are available in the following languages and frameworks: * [C#](https://github.com/finbourne/lusid-sdk-csharp) * [Java](https://github.com/finbourne/lusid-sdk-java) * [JavaScript](https://github.com/finbourne/lusid-sdk-js) * [Python](https://github.com/finbourne/lusid-sdk-python) * [Angular](https://github.com/finbourne/lusid-sdk-angular) The LUSID platform is made up of a number of sub-applications. You can find the API / swagger documentation by following the links in the table below. | Application | Description | API / Swagger Documentation | |---------------|-----------------------------------------------------------------------------------|------------------------------------------------------| | LUSID | Open, API-first, developer-friendly investment data platform. | [Swagger](../../../api/swagger/index.html) | | Web app | User-facing front end for LUSID. | [Swagger](../../../app/swagger/index.html) | | Scheduler | Automated job scheduler. | [Swagger](../../../scheduler2/swagger/index.html) | | Insights | Monitoring and troubleshooting service. | [Swagger](../../../insights/swagger/index.html) | | Identity | Identity management for LUSID (in conjunction with Access) | [Swagger](../../../identity/swagger/index.html) | | Access | Access control for LUSID (in conjunction with Identity) | [Swagger](../../../access/swagger/index.html) | | Drive | Secure file repository and manager for collaboration. | [Swagger](../../../drive/swagger/index.html) | | Luminesce | Data virtualisation service (query data from multiple providers, including LUSID) | [Swagger](../../../honeycomb/swagger/index.html) | | Notification | Notification service. | [Swagger](../../../notifications/swagger/index.html) | | Configuration | File store for secrets and other sensitive information. | [Swagger](../../../configuration/swagger/index.html) | # Error Codes | Code|Name|Description | | ---|---|--- | | <a name=\"-10\">-10</a>|Server Configuration Error| | | <a name=\"-1\">-1</a>|Unknown error|An unexpected error was encountered on our side. | | <a name=\"102\">102</a>|Version Not Found| | | <a name=\"103\">103</a>|Api Rate Limit Violation| | | <a name=\"104\">104</a>|Instrument Not Found| | | <a name=\"105\">105</a>|Property Not Found| | | <a name=\"106\">106</a>|Portfolio Recursion Depth| | | <a name=\"108\">108</a>|Group Not Found| | | <a name=\"109\">109</a>|Portfolio Not Found| | | <a name=\"110\">110</a>|Property Schema Not Found| | | <a name=\"111\">111</a>|Portfolio Ancestry Not Found| | | <a name=\"112\">112</a>|Portfolio With Id Already Exists| | | <a name=\"113\">113</a>|Orphaned Portfolio| | | <a name=\"119\">119</a>|Missing Base Claims| | | <a name=\"121\">121</a>|Property Not Defined| | | <a name=\"122\">122</a>|Cannot Delete System Property| | | <a name=\"123\">123</a>|Cannot Modify Immutable Property Field| | | <a name=\"124\">124</a>|Property Already Exists| | | <a name=\"125\">125</a>|Invalid Property Life Time| | | <a name=\"126\">126</a>|Property Constraint Style Excludes Properties| | | <a name=\"127\">127</a>|Cannot Modify Default Data Type| | | <a name=\"128\">128</a>|Group Already Exists| | | <a name=\"129\">129</a>|No Such Data Type| | | <a name=\"130\">130</a>|Undefined Value For Data Type| | | <a name=\"131\">131</a>|Unsupported Value Type Defined On Data Type| | | <a name=\"132\">132</a>|Validation Error| | | <a name=\"133\">133</a>|Loop Detected In Group Hierarchy| | | <a name=\"134\">134</a>|Undefined Acceptable Values| | | <a name=\"135\">135</a>|Sub Group Already Exists| | | <a name=\"138\">138</a>|Price Source Not Found| | | <a name=\"139\">139</a>|Analytic Store Not Found| | | <a name=\"141\">141</a>|Analytic Store Already Exists| | | <a name=\"143\">143</a>|Client Instrument Already Exists| | | <a name=\"144\">144</a>|Duplicate In Parameter Set| | | <a name=\"147\">147</a>|Results Not Found| | | <a name=\"148\">148</a>|Order Field Not In Result Set| | | <a name=\"149\">149</a>|Operation Failed| | | <a name=\"150\">150</a>|Elastic Search Error| | | <a name=\"151\">151</a>|Invalid Parameter Value| | | <a name=\"153\">153</a>|Command Processing Failure| | | <a name=\"154\">154</a>|Entity State Construction Failure| | | <a name=\"155\">155</a>|Entity Timeline Does Not Exist| | | <a name=\"156\">156</a>|Concurrency Conflict Failure| | | <a name=\"157\">157</a>|Invalid Request| | | <a name=\"158\">158</a>|Event Publish Unknown| | | <a name=\"159\">159</a>|Event Query Failure| | | <a name=\"160\">160</a>|Blob Did Not Exist| | | <a name=\"162\">162</a>|Sub System Request Failure| | | <a name=\"163\">163</a>|Sub System Configuration Failure| | | <a name=\"165\">165</a>|Failed To Delete| | | <a name=\"166\">166</a>|Upsert Client Instrument Failure| | | <a name=\"167\">167</a>|Illegal As At Interval| | | <a name=\"168\">168</a>|Illegal Bitemporal Query| | | <a name=\"169\">169</a>|Invalid Alternate Id| | | <a name=\"170\">170</a>|Cannot Add Source Portfolio Property Explicitly| | | <a name=\"171\">171</a>|Entity Already Exists In Group| | | <a name=\"173\">173</a>|Entity With Id Already Exists| | | <a name=\"174\">174</a>|Derived Portfolio Details Do Not Exist| | | <a name=\"175\">175</a>|Entity Not In Group| | | <a name=\"176\">176</a>|Portfolio With Name Already Exists| | | <a name=\"177\">177</a>|Invalid Transactions| | | <a name=\"178\">178</a>|Reference Portfolio Not Found| | | <a name=\"179\">179</a>|Duplicate Id| | | <a name=\"180\">180</a>|Command Retrieval Failure| | | <a name=\"181\">181</a>|Data Filter Application Failure| | | <a name=\"182\">182</a>|Search Failed| | | <a name=\"183\">183</a>|Movements Engine Configuration Key Failure| | | <a name=\"184\">184</a>|Fx Rate Source Not Found| | | <a name=\"185\">185</a>|Accrual Source Not Found| | | <a name=\"186\">186</a>|Access Denied| | | <a name=\"187\">187</a>|Invalid Identity Token| | | <a name=\"188\">188</a>|Invalid Request Headers| | | <a name=\"189\">189</a>|Price Not Found| | | <a name=\"190\">190</a>|Invalid Sub Holding Keys Provided| | | <a name=\"191\">191</a>|Duplicate Sub Holding Keys Provided| | | <a name=\"192\">192</a>|Cut Definition Not Found| | | <a name=\"193\">193</a>|Cut Definition Invalid| | | <a name=\"194\">194</a>|Time Variant Property Deletion Date Unspecified| | | <a name=\"195\">195</a>|Perpetual Property Deletion Date Specified| | | <a name=\"196\">196</a>|Time Variant Property Upsert Date Unspecified| | | <a name=\"197\">197</a>|Perpetual Property Upsert Date Specified| | | <a name=\"200\">200</a>|Invalid Unit For Data Type| | | <a name=\"201\">201</a>|Invalid Type For Data Type| | | <a name=\"202\">202</a>|Invalid Value For Data Type| | | <a name=\"203\">203</a>|Unit Not Defined For Data Type| | | <a name=\"204\">204</a>|Units Not Supported On Data Type| | | <a name=\"205\">205</a>|Cannot Specify Units On Data Type| | | <a name=\"206\">206</a>|Unit Schema Inconsistent With Data Type| | | <a name=\"207\">207</a>|Unit Definition Not Specified| | | <a name=\"208\">208</a>|Duplicate Unit Definitions Specified| | | <a name=\"209\">209</a>|Invalid Units Definition| | | <a name=\"210\">210</a>|Invalid Instrument Identifier Unit| | | <a name=\"211\">211</a>|Holdings Adjustment Does Not Exist| | | <a name=\"212\">212</a>|Could Not Build Excel Url| | | <a name=\"213\">213</a>|Could Not Get Excel Version| | | <a name=\"214\">214</a>|Instrument By Code Not Found| | | <a name=\"215\">215</a>|Entity Schema Does Not Exist| | | <a name=\"216\">216</a>|Feature Not Supported On Portfolio Type| | | <a name=\"217\">217</a>|Quote Not Found| | | <a name=\"218\">218</a>|Invalid Quote Identifier| | | <a name=\"219\">219</a>|Invalid Metric For Data Type| | | <a name=\"220\">220</a>|Invalid Instrument Definition| | | <a name=\"221\">221</a>|Instrument Upsert Failure| | | <a name=\"222\">222</a>|Reference Portfolio Request Not Supported| | | <a name=\"223\">223</a>|Transaction Portfolio Request Not Supported| | | <a name=\"224\">224</a>|Invalid Property Value Assignment| | | <a name=\"230\">230</a>|Transaction Type Not Found| | | <a name=\"231\">231</a>|Transaction Type Duplication| | | <a name=\"232\">232</a>|Portfolio Does Not Exist At Given Date| | | <a name=\"233\">233</a>|Query Parser Failure| | | <a name=\"234\">234</a>|Duplicate Constituent| | | <a name=\"235\">235</a>|Unresolved Instrument Constituent| | | <a name=\"236\">236</a>|Unresolved Instrument In Transition| | | <a name=\"237\">237</a>|Missing Side Definitions| | | <a name=\"299\">299</a>|Invalid Recipe| | | <a name=\"300\">300</a>|Missing Recipe| | | <a name=\"301\">301</a>|Dependencies| | | <a name=\"304\">304</a>|Portfolio Preprocess Failure| | | <a name=\"310\">310</a>|Valuation Engine Failure| | | <a name=\"311\">311</a>|Task Factory Failure| | | <a name=\"312\">312</a>|Task Evaluation Failure| | | <a name=\"313\">313</a>|Task Generation Failure| | | <a name=\"314\">314</a>|Engine Configuration Failure| | | <a name=\"315\">315</a>|Model Specification Failure| | | <a name=\"320\">320</a>|Market Data Key Failure| | | <a name=\"321\">321</a>|Market Resolver Failure| | | <a name=\"322\">322</a>|Market Data Failure| | | <a name=\"330\">330</a>|Curve Failure| | | <a name=\"331\">331</a>|Volatility Surface Failure| | | <a name=\"332\">332</a>|Volatility Cube Failure| | | <a name=\"350\">350</a>|Instrument Failure| | | <a name=\"351\">351</a>|Cash Flows Failure| | | <a name=\"352\">352</a>|Reference Data Failure| | | <a name=\"360\">360</a>|Aggregation Failure| | | <a name=\"361\">361</a>|Aggregation Measure Failure| | | <a name=\"370\">370</a>|Result Retrieval Failure| | | <a name=\"371\">371</a>|Result Processing Failure| | | <a name=\"372\">372</a>|Vendor Result Processing Failure| | | <a name=\"373\">373</a>|Vendor Result Mapping Failure| | | <a name=\"374\">374</a>|Vendor Library Unauthorised| | | <a name=\"375\">375</a>|Vendor Connectivity Error| | | <a name=\"376\">376</a>|Vendor Interface Error| | | <a name=\"377\">377</a>|Vendor Pricing Failure| | | <a name=\"378\">378</a>|Vendor Translation Failure| | | <a name=\"379\">379</a>|Vendor Key Mapping Failure| | | <a name=\"380\">380</a>|Vendor Reflection Failure| | | <a name=\"381\">381</a>|Vendor Process Failure| | | <a name=\"382\">382</a>|Vendor System Failure| | | <a name=\"390\">390</a>|Attempt To Upsert Duplicate Quotes| | | <a name=\"391\">391</a>|Corporate Action Source Does Not Exist| | | <a name=\"392\">392</a>|Corporate Action Source Already Exists| | | <a name=\"393\">393</a>|Instrument Identifier Already In Use| | | <a name=\"394\">394</a>|Properties Not Found| | | <a name=\"395\">395</a>|Batch Operation Aborted| | | <a name=\"400\">400</a>|Invalid Iso4217 Currency Code| | | <a name=\"401\">401</a>|Cannot Assign Instrument Identifier To Currency| | | <a name=\"402\">402</a>|Cannot Assign Currency Identifier To Non Currency| | | <a name=\"403\">403</a>|Currency Instrument Cannot Be Deleted| | | <a name=\"404\">404</a>|Currency Instrument Cannot Have Economic Definition| | | <a name=\"405\">405</a>|Currency Instrument Cannot Have Lookthrough Portfolio| | | <a name=\"406\">406</a>|Cannot Create Currency Instrument With Multiple Identifiers| | | <a name=\"407\">407</a>|Specified Currency Is Undefined| | | <a name=\"410\">410</a>|Index Does Not Exist| | | <a name=\"411\">411</a>|Sort Field Does Not Exist| | | <a name=\"413\">413</a>|Negative Pagination Parameters| | | <a name=\"414\">414</a>|Invalid Search Syntax| | | <a name=\"415\">415</a>|Filter Execution Timeout| | | <a name=\"420\">420</a>|Side Definition Inconsistent| | | <a name=\"450\">450</a>|Invalid Quote Access Metadata Rule| | | <a name=\"451\">451</a>|Access Metadata Not Found| | | <a name=\"452\">452</a>|Invalid Access Metadata Identifier| | | <a name=\"460\">460</a>|Standard Resource Not Found| | | <a name=\"461\">461</a>|Standard Resource Conflict| | | <a name=\"462\">462</a>|Calendar Not Found| | | <a name=\"463\">463</a>|Date In A Calendar Not Found| | | <a name=\"464\">464</a>|Invalid Date Source Data| | | <a name=\"465\">465</a>|Invalid Timezone| | | <a name=\"601\">601</a>|Person Identifier Already In Use| | | <a name=\"602\">602</a>|Person Not Found| | | <a name=\"603\">603</a>|Cannot Set Identifier| | | <a name=\"617\">617</a>|Invalid Recipe Specification In Request| | | <a name=\"618\">618</a>|Inline Recipe Deserialisation Failure| | | <a name=\"619\">619</a>|Identifier Types Not Set For Entity| | | <a name=\"620\">620</a>|Cannot Delete All Client Defined Identifiers| | | <a name=\"650\">650</a>|The Order requested was not found.| | | <a name=\"654\">654</a>|The Allocation requested was not found.| | | <a name=\"655\">655</a>|Cannot build the fx forward target with the given holdings.| | | <a name=\"656\">656</a>|Group does not contain expected entities.| | | <a name=\"665\">665</a>|Destination directory not found| | | <a name=\"667\">667</a>|Relation definition already exists| | | <a name=\"672\">672</a>|Could not retrieve file contents| | | <a name=\"673\">673</a>|Missing entitlements for entities in Group| | | <a name=\"674\">674</a>|Next Best Action not found| | | <a name=\"676\">676</a>|Relation definition not defined| | | <a name=\"677\">677</a>|Invalid entity identifier for relation| | | <a name=\"681\">681</a>|Sorting by specified field not supported|One or more of the provided fields to order by were either invalid or not supported. | | <a name=\"682\">682</a>|Too many fields to sort by|The number of fields to sort the data by exceeds the number allowed by the endpoint | | <a name=\"684\">684</a>|Sequence Not Found| | | <a name=\"685\">685</a>|Sequence Already Exists| | | <a name=\"686\">686</a>|Non-cycling sequence has been exhausted| | | <a name=\"687\">687</a>|Legal Entity Identifier Already In Use| | | <a name=\"688\">688</a>|Legal Entity Not Found| | | <a name=\"689\">689</a>|The supplied pagination token is invalid| | | <a name=\"690\">690</a>|Property Type Is Not Supported| | | <a name=\"691\">691</a>|Multiple Tax-lots For Currency Type Is Not Supported| | | <a name=\"692\">692</a>|This endpoint does not support impersonation| | | <a name=\"693\">693</a>|Entity type is not supported for Relationship| | | <a name=\"694\">694</a>|Relationship Validation Failure| | | <a name=\"695\">695</a>|Relationship Not Found| | | <a name=\"697\">697</a>|Derived Property Formula No Longer Valid| | | <a name=\"698\">698</a>|Story is not available| | | <a name=\"703\">703</a>|Corporate Action Does Not Exist| | | <a name=\"720\">720</a>|The provided sort and filter combination is not valid| | | <a name=\"721\">721</a>|A2B generation failed| | | <a name=\"722\">722</a>|Aggregated Return Calculation Failure| | | <a name=\"723\">723</a>|Custom Entity Definition Identifier Already In Use| | | <a name=\"724\">724</a>|Custom Entity Definition Not Found| | | <a name=\"725\">725</a>|The Placement requested was not found.| | | <a name=\"726\">726</a>|The Execution requested was not found.| | | <a name=\"727\">727</a>|The Block requested was not found.| | | <a name=\"728\">728</a>|The Participation requested was not found.| | | <a name=\"729\">729</a>|The Package requested was not found.| | | <a name=\"730\">730</a>|The OrderInstruction requested was not found.| | | <a name=\"732\">732</a>|Custom Entity not found.| | | <a name=\"733\">733</a>|Custom Entity Identifier already in use.| | | <a name=\"735\">735</a>|Calculation Failed.| | | <a name=\"736\">736</a>|An expected key on HttpResponse is missing.| | | <a name=\"737\">737</a>|A required fee detail is missing.| | | <a name=\"738\">738</a>|Zero rows were returned from Luminesce| | | <a name=\"739\">739</a>|Provided Weekend Mask was invalid| | | <a name=\"742\">742</a>|Custom Entity fields do not match the definition| | | <a name=\"746\">746</a>|The provided sequence is not valid.| | | <a name=\"751\">751</a>|The type of the Custom Entity is different than the type provided in the definition.| | | <a name=\"752\">752</a>|Luminesce process returned an error.| | | <a name=\"753\">753</a>|File name or content incompatible with operation.| | | <a name=\"755\">755</a>|Schema of response from Drive is not as expected.| | | <a name=\"757\">757</a>|Schema of response from Luminesce is not as expected.| | | <a name=\"758\">758</a>|Luminesce timed out.| | | <a name=\"763\">763</a>|Invalid Lusid Entity Identifier Unit| | | <a name=\"768\">768</a>|Fee rule not found.| | | <a name=\"769\">769</a>|Cannot update the base currency of a portfolio with transactions loaded| | | <a name=\"771\">771</a>|Transaction configuration source not found| | | <a name=\"774\">774</a>|Compliance rule not found.| | | <a name=\"775\">775</a>|Fund accounting document cannot be processed.| | | <a name=\"778\">778</a>|Unable to look up FX rate from trade ccy to portfolio ccy for some of the trades.| | | <a name=\"782\">782</a>|The Property definition dataType is not matching the derivation formula dataType| | | <a name=\"783\">783</a>|The Property definition domain is not supported for derived properties| | | <a name=\"788\">788</a>|Compliance run not found failure.| | | <a name=\"790\">790</a>|Custom Entity has missing or invalid identifiers| | | <a name=\"791\">791</a>|Custom Entity definition already exists| | | <a name=\"792\">792</a>|Compliance PropertyKey is missing.| | | <a name=\"793\">793</a>|Compliance Criteria Value for matching is missing.| | | <a name=\"795\">795</a>|Cannot delete identifier definition| | | <a name=\"796\">796</a>|Tax rule set not found.| | | <a name=\"797\">797</a>|A tax rule set with this id already exists.| | | <a name=\"798\">798</a>|Multiple rule sets for the same property key are applicable.| | | <a name=\"800\">800</a>|Can not upsert an instrument event of this type.| | | <a name=\"801\">801</a>|The instrument event does not exist.| | | <a name=\"802\">802</a>|The Instrument event is missing salient information.| | | <a name=\"803\">803</a>|The Instrument event could not be processed.| | | <a name=\"804\">804</a>|Some data requested does not follow the order graph assumptions.| | | <a name=\"811\">811</a>|A price could not be found for an order.| | | <a name=\"812\">812</a>|A price could not be found for an allocation.| | | <a name=\"813\">813</a>|Chart of Accounts not found.| | | <a name=\"814\">814</a>|Account not found.| | | <a name=\"815\">815</a>|Abor not found.| | | <a name=\"816\">816</a>|Abor Configuration not found.| | | <a name=\"817\">817</a>|Reconciliation mapping not found| | | <a name=\"818\">818</a>|Attribute type could not be deleted because it doesn\'t exist.| | | <a name=\"819\">819</a>|Reconciliation not found.| | | <a name=\"820\">820</a>|Custodian Account not found.| | | <a name=\"821\">821</a>|Allocation Failure| | * * The version of the OpenAPI document: 0.11.5326 * Contact: info@finbourne.com * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ /* tslint:disable:no-unused-variable member-ordering */ import { Inject, Injectable, Optional } from '@angular/core'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { CustomHttpUrlEncodingCodec } from '../encoder'; import { BASE_PATH } from '../variables'; import { Configuration } from '../configuration'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; import * as i2 from "../configuration"; export class SearchService { constructor(httpClient, basePath, configuration) { this.httpClient = httpClient; this.basePath = 'https://www.lusid.com/api'; this.defaultHeaders = new HttpHeaders(); this.configuration = new Configuration(); if (configuration) { this.configuration = configuration; this.configuration.basePath = configuration.basePath || basePath || this.basePath; } else { this.configuration.basePath = basePath || this.basePath; } } /** * @param consumes string[] mime-types * @return true: consumes contains 'multipart/form-data', false: otherwise */ canConsumeForm(consumes) { const form = 'multipart/form-data'; for (const consume of consumes) { if (form === consume) { return true; } } return false; } instrumentsSearch(instrumentSearchProperty, masteredEffectiveAt, masteredOnly, scope, observe = 'body', reportProgress = false) { if (instrumentSearchProperty === null || instrumentSearchProperty === undefined) { throw new Error('Required parameter instrumentSearchProperty was null or undefined when calling instrumentsSearch.'); } let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); if (masteredEffectiveAt !== undefined && masteredEffectiveAt !== null) { queryParameters = queryParameters.set('masteredEffectiveAt', masteredEffectiveAt); } if (masteredOnly !== undefined && masteredOnly !== null) { queryParameters = queryParameters.set('masteredOnly', masteredOnly); } if (scope !== undefined && scope !== null) { queryParameters = queryParameters.set('scope', scope); } let headers = this.defaultHeaders; // authentication (oauth2) required if (this.configuration.accessToken) { const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts = [ 'text/plain', 'application/json', 'text/json' ]; const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes = [ 'application/json-patch+json', 'application/json', 'text/json', 'application/_*+json' ]; const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes); if (httpContentTypeSelected !== undefined) { headers = headers.set('Content-Type', httpContentTypeSelected); } return this.httpClient.post(`${this.configuration.basePath}/api/search/instruments`, instrumentSearchProperty, { params: queryParameters, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, reportProgress: reportProgress }); } searchPortfolioGroups(search, filter, sortBy, limit, page, observe = 'body', reportProgress = false) { let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); if (search !== undefined && search !== null) { queryParameters = queryParameters.set('search', search); } if (filter !== undefined && filter !== null) { queryParameters = queryParameters.set('filter', filter); } if (sortBy !== undefined && sortBy !== null) { queryParameters = queryParameters.set('sortBy', sortBy); } if (limit !== undefined && limit !== null) { queryParameters = queryParameters.set('limit', limit); } if (page !== undefined && page !== null) { queryParameters = queryParameters.set('page', page); } let headers = this.defaultHeaders; // authentication (oauth2) required if (this.configuration.accessToken) { const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts = [ 'text/plain', 'application/json', 'text/json' ]; const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes = []; return this.httpClient.get(`${this.configuration.basePath}/api/search/portfoliogroups`, { params: queryParameters, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, reportProgress: reportProgress }); } searchPortfolios(search, filter, sortBy, limit, page, observe = 'body', reportProgress = false) { let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); if (search !== undefined && search !== null) { queryParameters = queryParameters.set('search', search); } if (filter !== undefined && filter !== null) { queryParameters = queryParameters.set('filter', filter); } if (sortBy !== undefined && sortBy !== null) { queryParameters = queryParameters.set('sortBy', sortBy); } if (limit !== undefined && limit !== null) { queryParameters = queryParameters.set('limit', limit); } if (page !== undefined && page !== null) { queryParameters = queryParameters.set('page', page); } let headers = this.defaultHeaders; // authentication (oauth2) required if (this.configuration.accessToken) { const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts = [ 'text/plain', 'application/json', 'text/json' ]; const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes = []; return this.httpClient.get(`${this.configuration.basePath}/api/search/portfolios`, { params: queryParameters, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, reportProgress: reportProgress }); } searchProperties(search, filter, sortBy, limit, page, observe = 'body', reportProgress = false) { let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() }); if (search !== undefined && search !== null) { queryParameters = queryParameters.set('search', search); } if (filter !== undefined && filter !== null) { queryParameters = queryParameters.set('filter', filter); } if (sortBy !== undefined && sortBy !== null) { queryParameters = queryParameters.set('sortBy', sortBy); } if (limit !== undefined && limit !== null) { queryParameters = queryParameters.set('limit', limit); } if (page !== undefined && page !== null) { queryParameters = queryParameters.set('page', page); } let headers = this.defaultHeaders; // authentication (oauth2) required if (this.configuration.accessToken) { const accessToken = typeof this.configuration.accessToken === 'function' ? this.configuration.accessToken() : this.configuration.accessToken; headers = headers.set('Authorization', 'Bearer ' + accessToken); } // to determine the Accept header const httpHeaderAccepts = [ 'text/plain', 'application/json', 'text/json' ]; const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); if (httpHeaderAcceptSelected !== undefined) { headers = headers.set('Accept', httpHeaderAcceptSelected); } // to determine the Content-Type header const consumes = []; return this.httpClient.get(`${this.configuration.basePath}/api/search/propertydefinitions`, { params: queryParameters, withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, reportProgress: reportProgress }); } } /** @nocollapse */ SearchService.ɵfac = function SearchService_Factory(t) { return new (t || SearchService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(BASE_PATH, 8), i0.ɵɵinject(i2.Configuration, 8)); }; /** @nocollapse */ SearchService.ɵprov = i0.ɵɵdefineInjectable({ token: SearchService, factory: SearchService.ɵfac, providedIn: 'root' }); /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(SearchService, [{ type: Injectable, args: [{ providedIn: 'root' }] }], function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [BASE_PATH] }] }, { type: i2.Configuration, decorators: [{ type: Optional }] }]; }, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL3Vzci9zcmMvcHJvamVjdHMvbHVzaWQtc2RrLWFuZ3VsYXI4L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9nZW5lcmF0ZWQvYXBpL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQTJCLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQ1YsTUFBZ0Msc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQTZCLFlBQVksQ0FBQztBQVkvRSxPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUEwQixjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUEwQyxrQkFBa0IsQ0FBQzs7OztBQU1yRixNQUFNLE9BQU8sYUFBYTtJQU10QixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLDJCQUEyQixDQUFDO1FBQzFDLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFJdkMsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBRXJGO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFD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Q2xCLFdBQVc7U0FDZCxDQUFDO1FBQ0YsTUFBTSx3QkFBd0IsR0FBdUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlHLElBQUksd0JBQXdCLEtBQUssU0FBUyxFQUFFO1lBQ3hDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsdUNBQXVDO1FBQ3ZDLE1BQU0sUUFBUSxHQUFhLEVBQzFCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFvRCxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxpQ0FBaUMsRUFDekk7WUFDSSxNQUFNLEVBQUUsZUFBZTtZQUN2QixlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQ0osQ0FBQztJQUNOLENBQUM7OzZGQXZUUSxhQUFhLDBDQU0yQyxTQUFTO3dFQU5qRSxhQUFhLFdBQWIsYUFBYSxtQkFGWixNQUFNO2tEQUVQLGFBQWE7Y0FIekIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COztzQkFPa0QsUUFBUTs7c0JBQUcsTUFBTTt1QkFBQyxTQUFTOztzQkFBcUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTFVTSUQgQVBJXG4gKiAjIEludHJvZHVjdGlvbiAgVGhpcyBwYWdlIGRvY3VtZW50cyB0aGUgW0xVU0lEIEFQSXNdKC4uLy4uLy4uL2FwaS9zd2FnZ2VyKSwgd2hpY2ggYWxsb3dzIGF1dGhvcmlzZWQgY2xpZW50cyB0byBxdWVyeSBhbmQgdXBkYXRlIHRoZWlyIGRhdGEgd2l0aGluIHRoZSBMVVNJRCBwbGF0Zm9ybS4gIFNES3MgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgTFVTSUQgQVBJcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBmb2xsb3dpbmcgbGFuZ3VhZ2VzIGFuZCBmcmFtZXdvcmtzOiAgKiBbQyNdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5ib3VybmUvbHVzaWQtc2RrLWNzaGFycCkgKiBbSmF2YV0oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmJvdXJuZS9sdXNpZC1zZGstamF2YSkgKiBbSmF2YVNjcmlwdF0oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmJvdXJuZS9sdXNpZC1zZGstanMpICogW1B5dGhvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmJvdXJuZS9sdXNpZC1zZGstcHl0aG9uKSAqIFtBbmd1bGFyXShodHRwczovL2dpdGh1Yi5jb20vZmluYm91cm5lL2x1c2lkLXNkay1hbmd1bGFyKSAgVGhlIExVU0lEIHBsYXRmb3JtIGlzIG1hZGUgdXAgb2YgYSBudW1iZXIgb2Ygc3ViLWFwcGxpY2F0aW9ucy4gWW91IGNhbiBmaW5kIHRoZSBBUEkgLyBzd2FnZ2VyIGRvY3VtZW50YXRpb24gYnkgZm9sbG93aW5nIHRoZSBsaW5rcyBpbiB0aGUgdGFibGUgYmVsb3cuICAgfCBBcHBsaWNhdGlvbiAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQVBJIC8gU3dhZ2dlciBEb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8IExVU0lEICAgICAgICAgfCBPcGVuLCBBUEktZmlyc3QsIGRldmVsb3Blci1mcmllbmRseSBpbnZlc3RtZW50IGRhdGEgcGxhdGZvcm0uICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vYXBpL3N3YWdnZXIvaW5kZXguaHRtbCkgICAgICAgICAgIHwgfCBXZWIgYXBwICAgICAgIHwgVXNlci1mYWNpbmcgZnJvbnQgZW5kIGZvciBMVVNJRC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1N3YWdnZXJdKC4uLy4uLy4uL2FwcC9zd2FnZ2VyL2luZGV4Lmh0bWwpICAgICAgICAgICB8IHwgU2NoZWR1bGVyICAgICB8IEF1dG9tYXRlZCBqb2Igc2NoZWR1bGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9zY2hlZHVsZXIyL3N3YWdnZXIvaW5kZXguaHRtbCkgICAgfCB8IEluc2lnaHRzICAgICAgfCBNb25pdG9yaW5nIGFuZCB0cm91Ymxlc2hvb3Rpbmcgc2VydmljZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vaW5zaWdodHMvc3dhZ2dlci9pbmRleC5odG1sKSAgICAgIHwgfCBJZGVudGl0eSAgICAgIHwgSWRlbnRpdHkgbWFuYWdlbWVudCBmb3IgTFVTSUQgKGluIGNvbmp1bmN0aW9uIHdpdGggQWNjZXNzKSAgICAgICAgICAgICAgICAgICAgICAgIHwgW1N3YWdnZXJdKC4uLy4uLy4uL2lkZW50aXR5L3N3YWdnZXIvaW5kZXguaHRtbCkgICAgICB8IHwgQWNjZXNzICAgICAgICB8IEFjY2VzcyBjb250cm9sIGZvciBMVVNJRCAoaW4gY29uanVuY3Rpb24gd2l0aCBJZGVudGl0eSkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9hY2Nlc3Mvc3dhZ2dlci9pbmRleC5odG1sKSAgICAgICAgfCB8IERyaXZlICAgICAgICAgfCBTZWN1cmUgZmlsZSByZXBvc2l0b3J5IGFuZCBtYW5hZ2VyIGZvciBjb2xsYWJvcmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vZHJpdmUvc3dhZ2dlci9pbmRleC5odG1sKSAgICAgICAgIHwgfCBMdW1pbmVzY2UgICAgIHwgRGF0YSB2aXJ0dWFsaXNhdGlvbiBzZXJ2aWNlIChxdWVyeSBkYXRhIGZyb20gbXVsdGlwbGUgcHJvdmlkZXJzLCBpbmNsdWRpbmcgTFVTSUQpIHwgW1N3YWdnZXJdKC4uLy4uLy4uL2hvbmV5Y29tYi9zd2FnZ2VyL2luZGV4Lmh0bWwpICAgICB8IHwgTm90aWZpY2F0aW9uICB8IE5vdGlmaWNhdGlvbiBzZXJ2aWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9ub3RpZmljYXRpb25zL3N3YWdnZXIvaW5kZXguaHRtbCkgfCB8IENvbmZpZ3VyYXRpb24gfCBGaWxlIHN0b3JlIGZvciBzZWNyZXRzIGFuZCBvdGhlciBzZW5zaXRpdmUgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vY29uZmlndXJhdGlvbi9zd2FnZ2VyL2luZGV4Lmh0bWwpIHwgICAjIEVycm9yIENvZGVzICB8IENvZGV8TmFtZXxEZXNjcmlwdGlvbiB8IHwgLS0tfC0tLXwtLS0gfCB8IDxhIG5hbWU9XFxcIi0xMFxcXCI+LTEwPC9hPnxTZXJ2ZXIgQ29uZmlndXJhdGlvbiBFcnJvcnwgIHwgfCA8YSBuYW1lPVxcXCItMVxcXCI+LTE8L2E+fFVua25vd24gZXJyb3J8QW4gdW5leHBlY3RlZCBlcnJvciB3YXMgZW5jb3VudGVyZWQgb24gb3VyIHNpZGUuIHwgfCA8YSBuYW1lPVxcXCIxMDJcXFwiPjEwMjwvYT58VmVyc2lvbiBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTAzXFxcIj4xMDM8L2E+fEFwaSBSYXRlIExpbWl0IFZpb2xhdGlvbnwgIHwgfCA8YSBuYW1lPVxcXCIxMDRcXFwiPjEwNDwvYT58SW5zdHJ1bWVudCBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTA1XFxcIj4xMDU8L2E+fFByb3BlcnR5IE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxMDZcXFwiPjEwNjwvYT58UG9ydGZvbGlvIFJlY3Vyc2lvbiBEZXB0aHwgIHwgfCA8YSBuYW1lPVxcXCIxMDhcXFwiPjEwODwvYT58R3JvdXAgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjEwOVxcXCI+MTA5PC9hPnxQb3J0Zm9saW8gTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjExMFxcXCI+MTEwPC9hPnxQcm9wZXJ0eSBTY2hlbWEgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjExMVxcXCI+MTExPC9hPnxQb3J0Zm9saW8gQW5jZXN0cnkgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjExMlxcXCI+MTEyPC9hPnxQb3J0Zm9saW8gV2l0aCBJZCBBbHJlYWR5IEV4aXN0c3wgIHwgfCA8YSBuYW1lPVxcXCIxMTNcXFwiPjExMzwvYT58T3JwaGFuZWQgUG9ydGZvbGlvfCAgfCB8IDxhIG5hbWU9XFxcIjExOVxcXCI+MTE5PC9hPnxNaXNzaW5nIEJhc2UgQ2xhaW1zfCAgfCB8IDxhIG5hbWU9XFxcIjEyMVxcXCI+MTIxPC9hPnxQcm9wZXJ0eSBOb3QgRGVmaW5lZHwgIHwgfCA8YSBuYW1lPVxcXCIxMjJcXFwiPjEyMjwvYT58Q2Fubm90IERlbGV0ZSBTeXN0ZW0gUHJvcGVydHl8ICB8IHwgPGEgbmFtZT1cXFwiMTIzXFxcIj4xMjM8L2E+fENhbm5vdCBNb2RpZnkgSW1tdXRhYmxlIFByb3BlcnR5IEZpZWxkfCAgfCB8IDxhIG5hbWU9XFxcIjEyNFxcXCI+MTI0PC9hPnxQcm9wZXJ0eSBBbHJlYWR5IEV4aXN0c3wgIHwgfCA8YSBuYW1lPVxcXCIxMjVcXFwiPjEyNTwvYT58SW52YWxpZCBQcm9wZXJ0eSBMaWZlIFRpbWV8ICB8IHwgPGEgbmFtZT1cXFwiMTI2XFxcIj4xMjY8L2E+fFByb3BlcnR5IENvbnN0cmFpbnQgU3R5bGUgRXhjbHVkZXMgUHJvcGVydGllc3wgIHwgfCA8YSBuYW1lPVxcXCIxMjdcXFwiPjEyNzwvYT58Q2Fubm90IE1vZGlmeSBEZWZhdWx0IERhdGEgVHlwZXwgIHwgfCA8YSBuYW1lPVxcXCIxMjhcXFwiPjEyODwvYT58R3JvdXAgQWxyZWFkeSBFeGlzdHN8ICB8IHwgPGEgbmFtZT1cXFwiMTI5XFxcIj4xMjk8L2E+fE5vIFN1Y2ggRGF0YSBUeXBlfCAgfCB8IDxhIG5hbWU9XFxcIjEzMFxcXCI+MTMwPC9hPnxVbmRlZmluZWQgVmFsdWUgRm9yIERhdGEgVHlwZXwgIHwgfCA8YSBuYW1lPVxcXCIxMzFcXFwiPjEzMTwvYT58VW5zdXBwb3J0ZWQgVmFsdWUgVHlwZSBEZWZpbmVkIE9uIERhdGEgVHlwZXwgIHwgfCA8YSBuYW1lPVxcXCIxMzJcXFwiPjEzMjwvYT58VmFsaWRhdGlvbiBFcnJvcnwgIHwgfCA8YSBuYW1lPVxcXCIxMzNcXFwiPjEzMzwvYT58TG9vcCBEZXRlY3RlZCBJbiBHcm91cCBIaWVyYXJjaHl8ICB8IHwgPGEgbmFtZT1cXFwiMTM0XFxcIj4xMzQ8L2E+fFVuZGVmaW5lZCBBY2NlcHRhYmxlIFZhbHVlc3wgIHwgfCA8YSBuYW1lPVxcXCIxMzVcXFwiPjEzNTwvYT58U3ViIEdyb3VwIEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjEzOFxcXCI+MTM4PC9hPnxQcmljZSBTb3VyY2UgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjEzOVxcXCI+MTM5PC9hPnxBbmFseXRpYyBTdG9yZSBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTQxXFxcIj4xNDE8L2E+fEFuYWx5dGljIFN0b3JlIEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjE0M1xcXCI+MTQzPC9hPnxDbGllbnQgSW5zdHJ1bWVudCBBbHJlYWR5IEV4aXN0c3wgIHwgfCA8YSBuYW1lPVxcXCIxNDRcXFwiPjE0NDwvYT58RHVwbGljYXRlIEluIFBhcmFtZXRlciBTZXR8ICB8IHwgPGEgbmFtZT1cXFwiMTQ3XFxcIj4xNDc8L2E+fFJlc3VsdHMgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjE0OFxcXCI+MTQ4PC9hPnxPcmRlciBGaWVsZCBOb3QgSW4gUmVzdWx0IFNldHwgIHwgfCA8YSBuYW1lPVxcXCIxNDlcXFwiPjE0OTwvYT58T3BlcmF0aW9uIEZhaWxlZHwgIHwgfCA8YSBuYW1lPVxcXCIxNTBcXFwiPjE1MDwvYT58RWxhc3RpYyBTZWFyY2ggRXJyb3J8ICB8IHwgPGEgbmFtZT1cXFwiMTUxXFxcIj4xNTE8L2E+fEludmFsaWQgUGFyYW1ldGVyIFZhbHVlfCAgfCB8IDxhIG5hbWU9XFxcIjE1M1xcXCI+MTUzPC9hPnxDb21tYW5kIFByb2Nlc3NpbmcgRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxNTRcXFwiPjE1NDwvYT58RW50aXR5IFN0YXRlIENvbnN0cnVjdGlvbiBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE1NVxcXCI+MTU1PC9hPnxFbnRpdHkgVGltZWxpbmUgRG9lcyBOb3QgRXhpc3R8ICB8IHwgPGEgbmFtZT1cXFwiMTU2XFxcIj4xNTY8L2E+fENvbmN1cnJlbmN5IENvbmZsaWN0IEZhaWx1cmV8ICB8IHwgPGEgbmFtZT1cXFwiMTU3XFxcIj4xNTc8L2E+fEludmFsaWQgUmVxdWVzdHwgIHwgfCA8YSBuYW1lPVxcXCIxNThcXFwiPjE1ODwvYT58RXZlbnQgUHVibGlzaCBVbmtub3dufCAgfCB8IDxhIG5hbWU9XFxcIjE1OVxcXCI+MTU5PC9hPnxFdmVudCBRdWVyeSBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE2MFxcXCI+MTYwPC9hPnxCbG9iIERpZCBOb3QgRXhpc3R8ICB8IHwgPGEgbmFtZT1cXFwiMTYyXFxcIj4xNjI8L2E+fFN1YiBTeXN0ZW0gUmVxdWVzdCBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE2M1xcXCI+MTYzPC9hPnxTdWIgU3lzdGVtIENvbmZpZ3VyYXRpb24gRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxNjVcXFwiPjE2NTwvYT58RmFpbGVkIFRvIERlbGV0ZXwgIHwgfCA8YSBuYW1lPVxcXCIxNjZcXFwiPjE2NjwvYT58VXBzZXJ0IENsaWVudCBJbnN0cnVtZW50IEZhaWx1cmV8ICB8IHwgPGEgbmFtZT1cXFwiMTY3XFxcIj4xNjc8L2E+fElsbGVnYWwgQXMgQXQgSW50ZXJ2YWx8ICB8IHwgPGEgbmFtZT1cXFwiMTY4XFxcIj4xNjg8L2E+fElsbGVnYWwgQml0ZW1wb3JhbCBRdWVyeXwgIHwgfCA8YSBuYW1lPVxcXCIxNjlcXFwiPjE2OTwvYT58SW52YWxpZCBBbHRlcm5hdGUgSWR8ICB8IHwgPGEgbmFtZT1cXFwiMTcwXFxcIj4xNzA8L2E+fENhbm5vdCBBZGQgU291cmNlIFBvcnRmb2xpbyBQcm9wZXJ0eSBFeHBsaWNpdGx5fCAgfCB8IDxhIG5hbWU9XFxcIjE3MVxcXCI+MTcxPC9hPnxFbnRpdHkgQWxyZWFkeSBFeGlzdHMgSW4gR3JvdXB8ICB8IHwgPGEgbmFtZT1cXFwiMTczXFxcIj4xNzM8L2E+fEVudGl0eSBXaXRoIElkIEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjE3NFxcXCI+MTc0PC9hPnxEZXJpdmVkIFBvcnRmb2xpbyBEZXRhaWxzIERvIE5vdCBFeGlzdHwgIHwgfCA8YSBuYW1lPVxcXCIxNzVcXFwiPjE3NTwvYT58RW50aXR5IE5vdCBJbiBHcm91cHwgIHwgfCA8YSBuYW1lPVxcXCIxNzZcXFwiPjE3NjwvYT58UG9ydGZvbGlvIFdpdGggTmFtZSBBbHJlYWR5IEV4aXN0c3wgIHwgfCA8YSBuYW1lPVxcXCIxNzdcXFwiPjE3NzwvYT58SW52YWxpZCBUcmFuc2FjdGlvbnN8ICB8IHwgPGEgbmFtZT1cXFwiMTc4XFxcIj4xNzg8L2E+fFJlZmVy