@opsee/mcp-server 0.4.1 → 0.5.1

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.
@@ -1751,6 +1751,343 @@ export declare type CompleteDocumentGenerationResponse = Message<"api.v1.Complet
1751
1751
  */
1752
1752
  export declare const CompleteDocumentGenerationResponseSchema: GenMessage<CompleteDocumentGenerationResponse>;
1753
1753
 
1754
+ /**
1755
+ * PR Review messages
1756
+ *
1757
+ * @generated from message api.v1.ReviewPRRequest
1758
+ */
1759
+ export declare type ReviewPRRequest = Message<"api.v1.ReviewPRRequest"> & {
1760
+ /**
1761
+ * @generated from field: uint32 task_id = 1;
1762
+ */
1763
+ taskId: number;
1764
+
1765
+ /**
1766
+ * @generated from field: uint32 company_id = 2;
1767
+ */
1768
+ companyId: number;
1769
+
1770
+ /**
1771
+ * @generated from field: uint32 project_id = 3;
1772
+ */
1773
+ projectId: number;
1774
+
1775
+ /**
1776
+ * @generated from field: uint32 user_id = 4;
1777
+ */
1778
+ userId: number;
1779
+
1780
+ /**
1781
+ * @generated from field: uint32 task_pull_request_id = 5;
1782
+ */
1783
+ taskPullRequestId: number;
1784
+ };
1785
+
1786
+ /**
1787
+ * Describes the message api.v1.ReviewPRRequest.
1788
+ * Use `create(ReviewPRRequestSchema)` to create a new message.
1789
+ */
1790
+ export declare const ReviewPRRequestSchema: GenMessage<ReviewPRRequest>;
1791
+
1792
+ /**
1793
+ * @generated from message api.v1.ReviewPRResponse
1794
+ */
1795
+ export declare type ReviewPRResponse = Message<"api.v1.ReviewPRResponse"> & {
1796
+ /**
1797
+ * @generated from field: string job_name = 1;
1798
+ */
1799
+ jobName: string;
1800
+
1801
+ /**
1802
+ * @generated from field: string status = 2;
1803
+ */
1804
+ status: string;
1805
+
1806
+ /**
1807
+ * @generated from field: string message = 3;
1808
+ */
1809
+ message: string;
1810
+
1811
+ /**
1812
+ * @generated from field: uint32 workflow_run_id = 4;
1813
+ */
1814
+ workflowRunId: number;
1815
+ };
1816
+
1817
+ /**
1818
+ * Describes the message api.v1.ReviewPRResponse.
1819
+ * Use `create(ReviewPRResponseSchema)` to create a new message.
1820
+ */
1821
+ export declare const ReviewPRResponseSchema: GenMessage<ReviewPRResponse>;
1822
+
1823
+ /**
1824
+ * @generated from message api.v1.PRReviewFinding
1825
+ */
1826
+ export declare type PRReviewFinding = Message<"api.v1.PRReviewFinding"> & {
1827
+ /**
1828
+ * "task_alignment" | "code_quality" | "conventions" | "missing_requirements"
1829
+ *
1830
+ * @generated from field: string category = 1;
1831
+ */
1832
+ category: string;
1833
+
1834
+ /**
1835
+ * "info" | "warning" | "error"
1836
+ *
1837
+ * @generated from field: string severity = 2;
1838
+ */
1839
+ severity: string;
1840
+
1841
+ /**
1842
+ * @generated from field: string title = 3;
1843
+ */
1844
+ title: string;
1845
+
1846
+ /**
1847
+ * @generated from field: string description = 4;
1848
+ */
1849
+ description: string;
1850
+ };
1851
+
1852
+ /**
1853
+ * Describes the message api.v1.PRReviewFinding.
1854
+ * Use `create(PRReviewFindingSchema)` to create a new message.
1855
+ */
1856
+ export declare const PRReviewFindingSchema: GenMessage<PRReviewFinding>;
1857
+
1858
+ /**
1859
+ * @generated from message api.v1.GetPRReviewResultRequest
1860
+ */
1861
+ export declare type GetPRReviewResultRequest = Message<"api.v1.GetPRReviewResultRequest"> & {
1862
+ /**
1863
+ * @generated from field: uint32 workflow_run_id = 1;
1864
+ */
1865
+ workflowRunId: number;
1866
+ };
1867
+
1868
+ /**
1869
+ * Describes the message api.v1.GetPRReviewResultRequest.
1870
+ * Use `create(GetPRReviewResultRequestSchema)` to create a new message.
1871
+ */
1872
+ export declare const GetPRReviewResultRequestSchema: GenMessage<GetPRReviewResultRequest>;
1873
+
1874
+ /**
1875
+ * @generated from message api.v1.GetPRReviewResultResponse
1876
+ */
1877
+ export declare type GetPRReviewResultResponse = Message<"api.v1.GetPRReviewResultResponse"> & {
1878
+ /**
1879
+ * "pending" | "running" | "completed" | "failed"
1880
+ *
1881
+ * @generated from field: string status = 1;
1882
+ */
1883
+ status: string;
1884
+
1885
+ /**
1886
+ * @generated from field: string summary = 2;
1887
+ */
1888
+ summary: string;
1889
+
1890
+ /**
1891
+ * @generated from field: repeated api.v1.PRReviewFinding findings = 3;
1892
+ */
1893
+ findings: PRReviewFinding[];
1894
+
1895
+ /**
1896
+ * @generated from field: string error_message = 4;
1897
+ */
1898
+ errorMessage: string;
1899
+ };
1900
+
1901
+ /**
1902
+ * Describes the message api.v1.GetPRReviewResultResponse.
1903
+ * Use `create(GetPRReviewResultResponseSchema)` to create a new message.
1904
+ */
1905
+ export declare const GetPRReviewResultResponseSchema: GenMessage<GetPRReviewResultResponse>;
1906
+
1907
+ /**
1908
+ * @generated from message api.v1.PostPRReviewRequest
1909
+ */
1910
+ export declare type PostPRReviewRequest = Message<"api.v1.PostPRReviewRequest"> & {
1911
+ /**
1912
+ * @generated from field: uint32 workflow_run_id = 1;
1913
+ */
1914
+ workflowRunId: number;
1915
+ };
1916
+
1917
+ /**
1918
+ * Describes the message api.v1.PostPRReviewRequest.
1919
+ * Use `create(PostPRReviewRequestSchema)` to create a new message.
1920
+ */
1921
+ export declare const PostPRReviewRequestSchema: GenMessage<PostPRReviewRequest>;
1922
+
1923
+ /**
1924
+ * @generated from message api.v1.PostPRReviewResponse
1925
+ */
1926
+ export declare type PostPRReviewResponse = Message<"api.v1.PostPRReviewResponse"> & {
1927
+ /**
1928
+ * @generated from field: bool success = 1;
1929
+ */
1930
+ success: boolean;
1931
+
1932
+ /**
1933
+ * @generated from field: string message = 2;
1934
+ */
1935
+ message: string;
1936
+
1937
+ /**
1938
+ * @generated from field: string pr_comment_url = 3;
1939
+ */
1940
+ prCommentUrl: string;
1941
+ };
1942
+
1943
+ /**
1944
+ * Describes the message api.v1.PostPRReviewResponse.
1945
+ * Use `create(PostPRReviewResponseSchema)` to create a new message.
1946
+ */
1947
+ export declare const PostPRReviewResponseSchema: GenMessage<PostPRReviewResponse>;
1948
+
1949
+ /**
1950
+ * @generated from message api.v1.CompletePRReviewRequest
1951
+ */
1952
+ export declare type CompletePRReviewRequest = Message<"api.v1.CompletePRReviewRequest"> & {
1953
+ /**
1954
+ * @generated from field: uint32 workflow_run_id = 1;
1955
+ */
1956
+ workflowRunId: number;
1957
+
1958
+ /**
1959
+ * @generated from field: string worker_id = 2;
1960
+ */
1961
+ workerId: string;
1962
+
1963
+ /**
1964
+ * @generated from field: string status = 3;
1965
+ */
1966
+ status: string;
1967
+
1968
+ /**
1969
+ * @generated from field: uint32 total_credits_used = 4;
1970
+ */
1971
+ totalCreditsUsed: number;
1972
+
1973
+ /**
1974
+ * @generated from field: float total_elapsed_seconds = 5;
1975
+ */
1976
+ totalElapsedSeconds: number;
1977
+
1978
+ /**
1979
+ * @generated from field: string result_json = 6;
1980
+ */
1981
+ resultJson: string;
1982
+ };
1983
+
1984
+ /**
1985
+ * Describes the message api.v1.CompletePRReviewRequest.
1986
+ * Use `create(CompletePRReviewRequestSchema)` to create a new message.
1987
+ */
1988
+ export declare const CompletePRReviewRequestSchema: GenMessage<CompletePRReviewRequest>;
1989
+
1990
+ /**
1991
+ * @generated from message api.v1.CompletePRReviewResponse
1992
+ */
1993
+ export declare type CompletePRReviewResponse = Message<"api.v1.CompletePRReviewResponse"> & {
1994
+ /**
1995
+ * @generated from field: api.v1.AIWorkflowRun workflow_run = 1;
1996
+ */
1997
+ workflowRun?: AIWorkflowRun;
1998
+ };
1999
+
2000
+ /**
2001
+ * Describes the message api.v1.CompletePRReviewResponse.
2002
+ * Use `create(CompletePRReviewResponseSchema)` to create a new message.
2003
+ */
2004
+ export declare const CompletePRReviewResponseSchema: GenMessage<CompletePRReviewResponse>;
2005
+
2006
+ /**
2007
+ * @generated from message api.v1.PRDiffFile
2008
+ */
2009
+ export declare type PRDiffFile = Message<"api.v1.PRDiffFile"> & {
2010
+ /**
2011
+ * @generated from field: string filename = 1;
2012
+ */
2013
+ filename: string;
2014
+
2015
+ /**
2016
+ * @generated from field: string patch = 2;
2017
+ */
2018
+ patch: string;
2019
+
2020
+ /**
2021
+ * @generated from field: int32 additions = 3;
2022
+ */
2023
+ additions: number;
2024
+
2025
+ /**
2026
+ * @generated from field: int32 deletions = 4;
2027
+ */
2028
+ deletions: number;
2029
+
2030
+ /**
2031
+ * "added" | "modified" | "deleted" | "renamed"
2032
+ *
2033
+ * @generated from field: string status = 5;
2034
+ */
2035
+ status: string;
2036
+ };
2037
+
2038
+ /**
2039
+ * Describes the message api.v1.PRDiffFile.
2040
+ * Use `create(PRDiffFileSchema)` to create a new message.
2041
+ */
2042
+ export declare const PRDiffFileSchema: GenMessage<PRDiffFile>;
2043
+
2044
+ /**
2045
+ * @generated from message api.v1.GetPRDiffRequest
2046
+ */
2047
+ export declare type GetPRDiffRequest = Message<"api.v1.GetPRDiffRequest"> & {
2048
+ /**
2049
+ * @generated from field: uint32 task_pull_request_id = 1;
2050
+ */
2051
+ taskPullRequestId: number;
2052
+
2053
+ /**
2054
+ * @generated from field: uint32 company_id = 2;
2055
+ */
2056
+ companyId: number;
2057
+ };
2058
+
2059
+ /**
2060
+ * Describes the message api.v1.GetPRDiffRequest.
2061
+ * Use `create(GetPRDiffRequestSchema)` to create a new message.
2062
+ */
2063
+ export declare const GetPRDiffRequestSchema: GenMessage<GetPRDiffRequest>;
2064
+
2065
+ /**
2066
+ * @generated from message api.v1.GetPRDiffResponse
2067
+ */
2068
+ export declare type GetPRDiffResponse = Message<"api.v1.GetPRDiffResponse"> & {
2069
+ /**
2070
+ * @generated from field: repeated api.v1.PRDiffFile files = 1;
2071
+ */
2072
+ files: PRDiffFile[];
2073
+
2074
+ /**
2075
+ * @generated from field: int32 total_additions = 2;
2076
+ */
2077
+ totalAdditions: number;
2078
+
2079
+ /**
2080
+ * @generated from field: int32 total_deletions = 3;
2081
+ */
2082
+ totalDeletions: number;
2083
+ };
2084
+
2085
+ /**
2086
+ * Describes the message api.v1.GetPRDiffResponse.
2087
+ * Use `create(GetPRDiffResponseSchema)` to create a new message.
2088
+ */
2089
+ export declare const GetPRDiffResponseSchema: GenMessage<GetPRDiffResponse>;
2090
+
1754
2091
  /**
1755
2092
  * WorkflowType defines the type of workflow being executed
1756
2093
  *
@@ -1798,6 +2135,13 @@ export enum WorkflowType {
1798
2135
  * @generated from enum value: WORKFLOW_TYPE_GENERATE_DOCUMENT = 5;
1799
2136
  */
1800
2137
  GENERATE_DOCUMENT = 5,
2138
+
2139
+ /**
2140
+ * PR/MR review workflow
2141
+ *
2142
+ * @generated from enum value: WORKFLOW_TYPE_PR_REVIEW = 6;
2143
+ */
2144
+ PR_REVIEW = 6,
1801
2145
  }
1802
2146
 
1803
2147
  /**
@@ -2019,6 +2363,50 @@ export declare const OrchestratorService: GenService<{
2019
2363
  input: typeof CompleteDocumentGenerationRequestSchema;
2020
2364
  output: typeof CompleteDocumentGenerationResponseSchema;
2021
2365
  },
2366
+ /**
2367
+ * PR Review operations
2368
+ *
2369
+ * @generated from rpc api.v1.OrchestratorService.ReviewPR
2370
+ */
2371
+ reviewPR: {
2372
+ methodKind: "unary";
2373
+ input: typeof ReviewPRRequestSchema;
2374
+ output: typeof ReviewPRResponseSchema;
2375
+ },
2376
+ /**
2377
+ * @generated from rpc api.v1.OrchestratorService.GetPRReviewResult
2378
+ */
2379
+ getPRReviewResult: {
2380
+ methodKind: "unary";
2381
+ input: typeof GetPRReviewResultRequestSchema;
2382
+ output: typeof GetPRReviewResultResponseSchema;
2383
+ },
2384
+ /**
2385
+ * @generated from rpc api.v1.OrchestratorService.PostPRReview
2386
+ */
2387
+ postPRReview: {
2388
+ methodKind: "unary";
2389
+ input: typeof PostPRReviewRequestSchema;
2390
+ output: typeof PostPRReviewResponseSchema;
2391
+ },
2392
+ /**
2393
+ * Worker-facing (internal)
2394
+ *
2395
+ * @generated from rpc api.v1.OrchestratorService.CompletePRReview
2396
+ */
2397
+ completePRReview: {
2398
+ methodKind: "unary";
2399
+ input: typeof CompletePRReviewRequestSchema;
2400
+ output: typeof CompletePRReviewResponseSchema;
2401
+ },
2402
+ /**
2403
+ * @generated from rpc api.v1.OrchestratorService.GetPRDiff
2404
+ */
2405
+ getPRDiff: {
2406
+ methodKind: "unary";
2407
+ input: typeof GetPRDiffRequestSchema;
2408
+ output: typeof GetPRDiffResponseSchema;
2409
+ },
2022
2410
  /**
2023
2411
  * Workflow Ledger operations
2024
2412
  *
@@ -13,7 +13,7 @@ import { file_api_v1_template_service } from "./template_service_pb";
13
13
  * Describes the file api/v1/orchestrator.proto.
14
14
  */
15
15
  export const file_api_v1_orchestrator = /*@__PURE__*/
16
- fileDesc("ChlhcGkvdjEvb3JjaGVzdHJhdG9yLnByb3RvEgZhcGkudjEimQIKFVJlZ2lzdGVyV29ya2VyUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgNEhsKCmNvbXBhbnlfaWQYAiABKA1CB/pCBCoCIAASEgoKcHJvamVjdF9pZBgDIAEoDRIZCghwb2RfbmFtZRgEIAEoCUIH+kIEcgIQARIcChRvcmNoZXN0cmF0b3JfdmVyc2lvbhgFIAEoCRItCgxjYXBhYmlsaXRpZXMYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EisKDXdvcmtmbG93X3R5cGUYByABKA4yFC5hcGkudjEuV29ya2Zsb3dUeXBlEhAKCGpvYl9uYW1lGAggASgJEhcKD3dvcmtmbG93X3J1bl9pZBgJIAEoDSKvAQoWUmVnaXN0ZXJXb3JrZXJSZXNwb25zZRIRCgl3b3JrZXJfaWQYASABKAkSFwoPd29ya2Zsb3dfcnVuX2lkGAIgASgNEicKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKaXNfcmVzdGFydBgEIAEoCBIVCg1zb3VyY2VfYnJhbmNoGAUgASgJEhUKDXNraXBfdW5pdF9pZHMYBiADKA0itAEKEEhlYXJ0YmVhdFJlcXVlc3QSGgoJd29ya2VyX2lkGAEgASgJQgf6QgRyAhABEhcKD3VuaXRzX2NvbXBsZXRlZBgCIAEoDRITCgt1bml0c190b3RhbBgDIAEoDRIUCgxjcmVkaXRzX3VzZWQYBCABKA0SFwoPZWxhcHNlZF9zZWNvbmRzGAUgASgCEhcKD2FjdGl2ZV91bml0X2lkcxgGIAMoDRIOCgZzdGF0dXMYByABKAkiPQoRSGVhcnRiZWF0UmVzcG9uc2USFwoPc2hvdWxkX2NvbnRpbnVlGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiawoVR2V0VGFza0NvbnRleHRSZXF1ZXN0EhgKB3Rhc2tfaWQYASABKA1CB/pCBCoCIAASGwoKY29tcGFueV9pZBgCIAEoDUIH+kIEKgIgABIbCgpwcm9qZWN0X2lkGAMgASgNQgf6QgQqAiAAIpUDChZHZXRUYXNrQ29udGV4dFJlc3BvbnNlEhoKBHRhc2sYASABKAsyDC5hcGkudjEuVGFzaxIgCgdwcm9qZWN0GAIgASgLMg8uYXBpLnYxLlByb2plY3QSMQoRdGFza19yZXBvc2l0b3JpZXMYAyADKAsyFi5hcGkudjEuVGFza1JlcG9zaXRvcnkSMAoQdmNzX2ludGVncmF0aW9ucxgEIAMoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIlCgxyZWxhdGVkX2RvY3MYBSADKAsyDy5hcGkudjEuRG9jUGFnZRIrCgx3b3JrZmxvd19ydW4YBiABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1bhIpCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKwoOdGFza19kb2NfcGFnZXMYCCADKAsyEy5hcGkudjEuVGFza0RvY1BhZ2USLAoOdGFza19kb2N1bWVudHMYCSADKAsyFC5hcGkudjEuVGFza0RvY3VtZW50IqUCChBXb3JrZmxvd1VuaXRTcGVjEhgKB3RlbXBfaWQYASABKAlCB/pCBHICEAESGQoFdGl0bGUYAiABKAlCCvpCB3IFEAEY/wESEwoLZGVzY3JpcHRpb24YAyABKAkSHgoNcmVwb3NpdG9yeV9pZBgEIAEoDUIH+kIEKgIgABJHCghjYXRlZ29yeRgFIAEoCUI1+kIycjBSA2FwaVIDd2ViUgZtb2JpbGVSCGRhdGFiYXNlUgVpbmZyYVIFdGVzdHNSBGRvY3MSFgoOc2VxdWVuY2Vfb3JkZXIYBiABKAUSGwoTZGVwZW5kc19vbl90ZW1wX2lkcxgHIAMoCRIpCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiqQEKGkNyZWF0ZVdvcmtmbG93VW5pdHNSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESMwoFdW5pdHMYAyADKAsyGC5hcGkudjEuV29ya2Zsb3dVbml0U3BlY0IK+kIHkgEECAEQZBIYChBwbGFubmluZ19jb250ZXh0GAQgASgJIssBChtDcmVhdGVXb3JrZmxvd1VuaXRzUmVzcG9uc2USJQoFdW5pdHMYASADKAsyFi5hcGkudjEuQUlXb3JrZmxvd1VuaXQSTwoPdGVtcF9pZF9tYXBwaW5nGAIgAygLMjYuYXBpLnYxLkNyZWF0ZVdvcmtmbG93VW5pdHNSZXNwb25zZS5UZW1wSWRNYXBwaW5nRW50cnkaNAoSVGVtcElkTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDToCOAEi8QIKGVVwZGF0ZVVuaXRQcm9ncmVzc1JlcXVlc3QSGAoHdW5pdF9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESXwoFc3RhZ2UYAyABKAlCUPpCTXJLUgVzdGFydFIEd29ya1IEdGVzdFICcWFSBmNvbW1pdFIGcmV2aWV3UgdjbG9uaW5nUglhbmFseXppbmdSDmNyZWF0aW5nX2ZpbGVzEk4KBnN0YXR1cxgEIAEoCUI++kI7cjlSB3BlbmRpbmdSB3J1bm5pbmdSCXN1Y2NlZWRlZFIGZmFpbGVkUgdza2lwcGVkUgljYW5jZWxsZWQSEQoJbG9nX2VudHJ5GAUgASgJEhQKDGNyZWRpdHNfdXNlZBgGIAEoDRItCgxzdGFnZV9yZXN1bHQYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKDWVycm9yX21lc3NhZ2UYCCABKAkiQgoaVXBkYXRlVW5pdFByb2dyZXNzUmVzcG9uc2USJAoEdW5pdBgBIAEoCzIWLmFwaS52MS5BSVdvcmtmbG93VW5pdCKwAgoXQ29tcGxldGVXb3JrZmxvd1JlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIzCgZzdGF0dXMYAyABKAlCI/pCIHIeUglzdWNjZWVkZWRSBmZhaWxlZFIJY2FuY2VsbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISDwoHc3VtbWFyeRgGIAEoCRIoCgdyZXN1bHRzGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIaCg1zb3VyY2VfYnJhbmNoGAggASgJSACIAQFCEAoOX3NvdXJjZV9icmFuY2giRwoYQ29tcGxldGVXb3JrZmxvd1Jlc3BvbnNlEisKDHdvcmtmbG93X3J1bhgBIAEoCzIVLmFwaS52MS5BSVdvcmtmbG93UnVuIrABChZHZXRQcm9tcHRDb25maWdSZXF1ZXN0ElwKCmFnZW50X3R5cGUYASABKAlCSPpCRXJDUgdwbGFubmVyUgVjb2RlclIGdGVzdGVyUgJxYVIIcmV2aWV3ZXJSCGFuYWx5emVyUhFzdWJ0YXNrX2dlbmVyYXRvchIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAAipQEKF0dldFByb21wdENvbmZpZ1Jlc3BvbnNlEhUKDXN5c3RlbV9wcm9tcHQYASABKAkSHAoUdXNlcl9wcm9tcHRfdGVtcGxhdGUYAiABKAkSKgoJdmFyaWFibGVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghleGFtcGxlcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiZQoVR2V0TW9kZWxDb25maWdSZXF1ZXN0EhsKCmNvbXBhbnlfaWQYASABKA1CB/pCBCoCIAASGwoKcHJvamVjdF9pZBgCIAEoDUIH+kIEKgIgABISCgphZ2VudF90eXBlGAMgASgJIpQBChZHZXRNb2RlbENvbmZpZ1Jlc3BvbnNlEhAKCHByb3ZpZGVyGAEgASgJEg0KBW1vZGVsGAIgASgJEhIKCm1heF90b2tlbnMYAyABKAUSEwoLdGVtcGVyYXR1cmUYBCABKAESMAoPcHJvdmlkZXJfY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKGAQoWU3RhcnRBSVdvcmtmbG93UmVxdWVzdBIYCgd0YXNrX2lkGAEgASgNQgf6QgQqAiAAEhsKCmNvbXBhbnlfaWQYAiABKA1CB/pCBCoCIAASGwoKcHJvamVjdF9pZBgDIAEoDUIH+kIEKgIgABIYCgd1c2VyX2lkGAQgASgNQgf6QgQqAiAAImUKF1N0YXJ0QUlXb3JrZmxvd1Jlc3BvbnNlEhAKCGpvYl9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhcKD3dvcmtmbG93X3J1bl9pZBgEIAEoDSJMChVTdG9wQUlXb3JrZmxvd1JlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIZCghqb2JfbmFtZRgCIAEoCUIH+kIEcgIQASI5ChZTdG9wQUlXb3JrZmxvd1Jlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIk0KGkdldEFJV29ya2Zsb3dTdGF0dXNSZXF1ZXN0EhkKCGpvYl9uYW1lGAEgASgJQgf6QgRyAhABEhQKDGluY2x1ZGVfbG9ncxgCIAEoCCI7ChtHZXRBSVdvcmtmbG93U3RhdHVzUmVzcG9uc2USDgoGc3RhdHVzGAEgASgJEgwKBGxvZ3MYAiABKAki8wEKHVVwZGF0ZUFuYWx5c2lzUHJvZ3Jlc3NSZXF1ZXN0EhwKC2FuYWx5c2lzX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIWCgVzdGFnZRgDIAEoCUIH+kIEcgIQARImChNwcm9ncmVzc19wZXJjZW50YWdlGAQgASgFQgn6QgYaBBhkKAASFAoMY3JlZGl0c191c2VkGAUgASgNEjEKBnN0YXR1cxgGIAEoCUIh+kIechxSB3J1bm5pbmdSCXN1Y2NlZWRlZFIGZmFpbGVkEg8KB21lc3NhZ2UYByABKAkiQgoeVXBkYXRlQW5hbHlzaXNQcm9ncmVzc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSKkAgoXQ29tcGxldGVBbmFseXNpc1JlcXVlc3QSHAoLYW5hbHlzaXNfaWQYASABKA1CB/pCBCoCIAASGgoJd29ya2VyX2lkGAIgASgJQgf6QgRyAhABEigKBnN0YXR1cxgDIAEoCUIY+kIVchNSCXN1Y2NlZWRlZFIGZmFpbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISDwoHc3VtbWFyeRgGIAEoCRIoCgdyZXN1bHRzGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCg1lcnJvcl9tZXNzYWdlGAggASgJEhgKEGhhc19vcHNlZV9jb25maWcYCSABKAgiPAoYQ29tcGxldGVBbmFseXNpc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSK9AQoXR2VuZXJhdGVTdWJ0YXNrc1JlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAASGAoHdXNlcl9pZBgEIAEoDUIH+kIEKgIgABIfCgxtYXhfc3VidGFza3MYBSABKAVCCfpCBhoEGBQoARITCgthdXRvX2Fzc2lnbhgGIAEoCCJmChhHZW5lcmF0ZVN1YnRhc2tzUmVzcG9uc2USEAoIam9iX25hbWUYASABKAkSDgoGc3RhdHVzGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSFwoPd29ya2Zsb3dfcnVuX2lkGAQgASgNIrwCCgtTdWJ0YXNrU3BlYxIYCgd0ZW1wX2lkGAEgASgJQgf6QgRyAhABEhkKBXRpdGxlGAIgASgJQgr6QgdyBRABGP8BEhMKC2Rlc2NyaXB0aW9uGAMgASgJEh8KDHN0b3J5X3BvaW50cxgEIAEoBUIJ+kIGGgQYZCgAEigKD2VzdGltYXRlZF9ob3VycxgFIAEoAkIP+kIMCgodAAB6RC0AAAAAEhQKDHRhc2tfdHlwZV9pZBgGIAEoDRIYChB0YXNrX3ByaW9yaXR5X2lkGAcgASgNEhsKE2RlcGVuZHNfb25fdGVtcF9pZHMYCCADKAkSIAoYc3VnZ2VzdGVkX3JlcG9zaXRvcnlfaWRzGAkgAygNEikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoVQ3JlYXRlU3VidGFza3NSZXF1ZXN0Eh8KDnBhcmVudF90YXNrX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIxCghzdWJ0YXNrcxgDIAMoCzITLmFwaS52MS5TdWJ0YXNrU3BlY0IK+kIHkgEECAEQFBIaChJnZW5lcmF0aW9uX2NvbnRleHQYBCABKAkiugEKFkNyZWF0ZVN1YnRhc2tzUmVzcG9uc2USHgoIc3VidGFza3MYASADKAsyDC5hcGkudjEuVGFzaxJKCg90ZW1wX2lkX21hcHBpbmcYAiADKAsyMS5hcGkudjEuQ3JlYXRlU3VidGFza3NSZXNwb25zZS5UZW1wSWRNYXBwaW5nRW50cnkaNAoSVGVtcElkTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDToCOAEipQIKIENvbXBsZXRlU3VidGFza0dlbmVyYXRpb25SZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESMwoGc3RhdHVzGAMgASgJQiP6QiByHlIJc3VjY2VlZGVkUgZmYWlsZWRSCWNhbmNlbGxlZBIaChJ0b3RhbF9jcmVkaXRzX3VzZWQYBCABKA0SHQoVdG90YWxfZWxhcHNlZF9zZWNvbmRzGAUgASgCEhgKEHN1YnRhc2tzX2NyZWF0ZWQYBiABKAUSDwoHc3VtbWFyeRgHIAEoCRIoCgdyZXN1bHRzGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJQCiFDb21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVzcG9uc2USKwoMd29ya2Zsb3dfcnVuGAEgASgLMhUuYXBpLnYxLkFJV29ya2Zsb3dSdW4ijAEKHEV4cGFuZFRhc2tEZXNjcmlwdGlvblJlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAASGAoHdXNlcl9pZBgEIAEoDUIH+kIEKgIgACJrCh1FeHBhbmRUYXNrRGVzY3JpcHRpb25SZXNwb25zZRIQCghqb2JfbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIXCg93b3JrZmxvd19ydW5faWQYBCABKA0iQQodR2V0RXhwYW5kZWREZXNjcmlwdGlvblJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAInoKHkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAkSMQoGcmVzdWx0GAIgASgLMiEuYXBpLnYxLkV4cGFuZGVkRGVzY3JpcHRpb25SZXN1bHQSFQoNZXJyb3JfbWVzc2FnZRgDIAEoCSKdAgoZRXhwYW5kZWREZXNjcmlwdGlvblJlc3VsdBIQCghvdmVydmlldxgBIAEoCRIPCgdkZXRhaWxzGAIgASgJEhkKEXRlY2huaWNhbF9jb250ZXh0GAMgASgJEjgKE2FjY2VwdGFuY2VfY3JpdGVyaWEYBCADKAsyGy5hcGkudjEuQWNjZXB0YW5jZUNyaXRlcmlvbhIuCg90ZWNobmljYWxfaGludHMYBSADKAsyFS5hcGkudjEuVGVjaG5pY2FsSGludBIaChJzdWdnZXN0ZWRfYXBwcm9hY2gYBiABKAkSHAoUZXN0aW1hdGVkX2NvbXBsZXhpdHkYByABKAkSHgoWZGVzY3JpcHRpb25fYmxvY2tfanNvbhgIIAEoCSJEChNBY2NlcHRhbmNlQ3JpdGVyaW9uEgoKAmlkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEgwKBHR5cGUYAyABKAkiPgoNVGVjaG5pY2FsSGludBIQCghjYXRlZ29yeRgBIAEoCRIMCgRoaW50GAIgASgJEg0KBWZpbGVzGAMgAygJIokBCh9BcHBseUV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIjChtpbmNsdWRlX2FjY2VwdGFuY2VfY3JpdGVyaWEYAiABKAgSHwoXaW5jbHVkZV90ZWNobmljYWxfaGludHMYAyABKAgiaAogQXBwbHlFeHBhbmRlZERlc2NyaXB0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEiIKDHVwZGF0ZWRfdGFzaxgDIAEoCzIMLmFwaS52MS5UYXNrIvkBCiNDb21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVxdWVzdBIgCg93b3JrZmxvd19ydW5faWQYASABKA1CB/pCBCoCIAASGgoJd29ya2VyX2lkGAIgASgJQgf6QgRyAhABEjMKBnN0YXR1cxgDIAEoCUIj+kIgch5SCXN1Y2NlZWRlZFIGZmFpbGVkUgljYW5jZWxsZWQSGgoSdG90YWxfY3JlZGl0c191c2VkGAQgASgNEh0KFXRvdGFsX2VsYXBzZWRfc2Vjb25kcxgFIAEoAhIPCgdzdW1tYXJ5GAYgASgJEhMKC3Jlc3VsdF9qc29uGAcgASgJIlMKJENvbXBsZXRlRGVzY3JpcHRpb25FeHBhbnNpb25SZXNwb25zZRIrCgx3b3JrZmxvd19ydW4YASABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1biJ2ChNVcHNlcnRMZWRnZXJSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIcCgtsZWRnZXJfanNvbhgCIAEoDEIH+kIEegIQAhIfCg5zY2hlbWFfdmVyc2lvbhgDIAEoBUIH+kIEGgIoASInChRVcHNlcnRMZWRnZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjQKEEdldExlZGdlclJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAIkAKEUdldExlZGdlclJlc3BvbnNlEhMKC2xlZGdlcl9qc29uGAEgASgMEhYKDnNjaGVtYV92ZXJzaW9uGAIgASgFIuYBCiFDb21wbGV0ZURvY3VtZW50R2VuZXJhdGlvblJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIzCgZzdGF0dXMYAyABKAlCI/pCIHIeUglzdWNjZWVkZWRSBmZhaWxlZFIJY2FuY2VsbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISEwoLcmVzdWx0X2pzb24YBiABKAkiUQoiQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb25SZXNwb25zZRIrCgx3b3JrZmxvd19ydW4YASABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1birUAQoMV29ya2Zsb3dUeXBlEh0KGVdPUktGTE9XX1RZUEVfVU5TUEVDSUZJRUQQABIWChJXT1JLRkxPV19UWVBFX1RBU0sQARIZChVXT1JLRkxPV19UWVBFX0FOQUxZWkUQAhIkCiBXT1JLRkxPV19UWVBFX1NVQlRBU0tfR0VORVJBVElPThADEicKI1dPUktGTE9XX1RZUEVfREVTQ1JJUFRJT05fRVhQQU5TSU9OEAQSIwofV09SS0ZMT1dfVFlQRV9HRU5FUkFURV9ET0NVTUVOVBAFMuchChNPcmNoZXN0cmF0b3JTZXJ2aWNlEooBCg5SZWdpc3RlcldvcmtlchIdLmFwaS52MS5SZWdpc3RlcldvcmtlclJlcXVlc3QaHi5hcGkudjEuUmVnaXN0ZXJXb3JrZXJSZXNwb25zZSI5gtPkkwIzOgEqIi4vYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZXJzL3JlZ2lzdGVyEogBCglIZWFydGJlYXQSGC5hcGkudjEuSGVhcnRiZWF0UmVxdWVzdBoZLmFwaS52MS5IZWFydGJlYXRSZXNwb25zZSJGgtPkkwJAOgEqIjsvYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZXJzL3t3b3JrZXJfaWR9L2hlYXJ0YmVhdBKOAQoOR2V0VGFza0NvbnRleHQSHS5hcGkudjEuR2V0VGFza0NvbnRleHRSZXF1ZXN0Gh4uYXBpLnYxLkdldFRhc2tDb250ZXh0UmVzcG9uc2UiPYLT5JMCNxI1L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdGFza3Mve3Rhc2tfaWR9L2NvbnRleHQSqgEKE0NyZWF0ZVdvcmtmbG93VW5pdHMSIi5hcGkudjEuQ3JlYXRlV29ya2Zsb3dVbml0c1JlcXVlc3QaIy5hcGkudjEuQ3JlYXRlV29ya2Zsb3dVbml0c1Jlc3BvbnNlIkqC0+STAkQ6ASoiPy9hcGkvdjEvaW50ZXJuYWwvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS91bml0cxKeAQoSVXBkYXRlVW5pdFByb2dyZXNzEiEuYXBpLnYxLlVwZGF0ZVVuaXRQcm9ncmVzc1JlcXVlc3QaIi5hcGkudjEuVXBkYXRlVW5pdFByb2dyZXNzUmVzcG9uc2UiQYLT5JMCOzoBKho2L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdW5pdHMve3VuaXRfaWR9L3Byb2dyZXNzEqQBChBDb21wbGV0ZVdvcmtmbG93Eh8uYXBpLnYxLkNvbXBsZXRlV29ya2Zsb3dSZXF1ZXN0GiAuYXBpLnYxLkNvbXBsZXRlV29ya2Zsb3dSZXNwb25zZSJNgtPkkwJHOgEqIkIvYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vY29tcGxldGUSlQEKD0dldFByb21wdENvbmZpZxIeLmFwaS52MS5HZXRQcm9tcHRDb25maWdSZXF1ZXN0Gh8uYXBpLnYxLkdldFByb21wdENvbmZpZ1Jlc3BvbnNlIkGC0+STAjsSOS9hcGkvdjEvaW50ZXJuYWwvb3JjaGVzdHJhdG9yL2NvbmZpZy9wcm9tcHRzL3thZ2VudF90eXBlfRKEAQoOR2V0TW9kZWxDb25maWcSHS5hcGkudjEuR2V0TW9kZWxDb25maWdSZXF1ZXN0Gh4uYXBpLnYxLkdldE1vZGVsQ29uZmlnUmVzcG9uc2UiM4LT5JMCLRIrL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvY29uZmlnL21vZGVscxKxAQoWVXBkYXRlQW5hbHlzaXNQcm9ncmVzcxIlLmFwaS52MS5VcGRhdGVBbmFseXNpc1Byb2dyZXNzUmVxdWVzdBomLmFwaS52MS5VcGRhdGVBbmFseXNpc1Byb2dyZXNzUmVzcG9uc2UiSILT5JMCQjoBKho9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvYW5hbHlzaXMve2FuYWx5c2lzX2lkfS9wcm9ncmVzcxKfAQoQQ29tcGxldGVBbmFseXNpcxIfLmFwaS52MS5Db21wbGV0ZUFuYWx5c2lzUmVxdWVzdBogLmFwaS52MS5Db21wbGV0ZUFuYWx5c2lzUmVzcG9uc2UiSILT5JMCQjoBKiI9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvYW5hbHlzaXMve2FuYWx5c2lzX2lkfS9jb21wbGV0ZRKDAQoPU3RhcnRBSVdvcmtmbG93Eh4uYXBpLnYxLlN0YXJ0QUlXb3JrZmxvd1JlcXVlc3QaHy5hcGkudjEuU3RhcnRBSVdvcmtmbG93UmVzcG9uc2UiL4LT5JMCKToBKiIkL2FwaS92MS9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3N0YXJ0En8KDlN0b3BBSVdvcmtmbG93Eh0uYXBpLnYxLlN0b3BBSVdvcmtmbG93UmVxdWVzdBoeLmFwaS52MS5TdG9wQUlXb3JrZmxvd1Jlc3BvbnNlIi6C0+STAig6ASoiIy9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy9zdG9wEpgBChNHZXRBSVdvcmtmbG93U3RhdHVzEiIuYXBpLnYxLkdldEFJV29ya2Zsb3dTdGF0dXNSZXF1ZXN0GiMuYXBpLnYxLkdldEFJV29ya2Zsb3dTdGF0dXNSZXNwb25zZSI4gtPkkwIyEjAvYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve2pvYl9uYW1lfS9zdGF0dXMSmAEKEEdlbmVyYXRlU3VidGFza3MSHy5hcGkudjEuR2VuZXJhdGVTdWJ0YXNrc1JlcXVlc3QaIC5hcGkudjEuR2VuZXJhdGVTdWJ0YXNrc1Jlc3BvbnNlIkGC0+STAjs6ASoiNi9hcGkvdjEvb3JjaGVzdHJhdG9yL3Rhc2tzL3t0YXNrX2lkfS9nZW5lcmF0ZS1zdWJ0YXNrcxKZAQoOQ3JlYXRlU3VidGFza3MSHS5hcGkudjEuQ3JlYXRlU3VidGFza3NSZXF1ZXN0Gh4uYXBpLnYxLkNyZWF0ZVN1YnRhc2tzUmVzcG9uc2UiSILT5JMCQjoBKiI9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdGFza3Mve3BhcmVudF90YXNrX2lkfS9zdWJ0YXNrcxLIAQoZQ29tcGxldGVTdWJ0YXNrR2VuZXJhdGlvbhIoLmFwaS52MS5Db21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVxdWVzdBopLmFwaS52MS5Db21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVzcG9uc2UiVoLT5JMCUDoBKiJLL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivc3VidGFzay1nZW5lcmF0aW9uL3t3b3JrZmxvd19ydW5faWR9L2NvbXBsZXRlEqgBChVFeHBhbmRUYXNrRGVzY3JpcHRpb24SJC5hcGkudjEuRXhwYW5kVGFza0Rlc2NyaXB0aW9uUmVxdWVzdBolLmFwaS52MS5FeHBhbmRUYXNrRGVzY3JpcHRpb25SZXNwb25zZSJCgtPkkwI8OgEqIjcvYXBpL3YxL29yY2hlc3RyYXRvci90YXNrcy97dGFza19pZH0vZXhwYW5kLWRlc2NyaXB0aW9uErYBChZHZXRFeHBhbmRlZERlc2NyaXB0aW9uEiUuYXBpLnYxLkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0GiYuYXBpLnYxLkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXNwb25zZSJNgtPkkwJHEkUvYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vZXhwYW5kZWQtZGVzY3JpcHRpb24SvAEKGEFwcGx5RXhwYW5kZWREZXNjcmlwdGlvbhInLmFwaS52MS5BcHBseUV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0GiguYXBpLnYxLkFwcGx5RXhwYW5kZWREZXNjcmlwdGlvblJlc3BvbnNlIk2C0+STAkc6ASoiQi9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS9hcHBseS1kZXNjcmlwdGlvbhLUAQocQ29tcGxldGVEZXNjcmlwdGlvbkV4cGFuc2lvbhIrLmFwaS52MS5Db21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVxdWVzdBosLmFwaS52MS5Db21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVzcG9uc2UiWYLT5JMCUzoBKiJOL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvZGVzY3JpcHRpb24tZXhwYW5zaW9uL3t3b3JrZmxvd19ydW5faWR9L2NvbXBsZXRlEqwBChdTdGFydERvY3VtZW50R2VuZXJhdGlvbhImLmFwaS52MS5TdGFydERvY3VtZW50R2VuZXJhdGlvblJlcXVlc3QaJy5hcGkudjEuU3RhcnREb2N1bWVudEdlbmVyYXRpb25SZXNwb25zZSJAgtPkkwI6OgEqIjUvYXBpL3YxL29yY2hlc3RyYXRvci90ZW1wbGF0ZXMve3RlbXBsYXRlX2lkfS9nZW5lcmF0ZRLEAQobR2V0RG9jdW1lbnRHZW5lcmF0aW9uUmVzdWx0EiouYXBpLnYxLkdldERvY3VtZW50R2VuZXJhdGlvblJlc3VsdFJlcXVlc3QaKy5hcGkudjEuR2V0RG9jdW1lbnRHZW5lcmF0aW9uUmVzdWx0UmVzcG9uc2UiTILT5JMCRhJEL2FwaS92MS9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2RvY3VtZW50LWdlbmVyYXRpb24SswEKFkFwcGx5R2VuZXJhdGVkRG9jdW1lbnQSJS5hcGkudjEuQXBwbHlHZW5lcmF0ZWREb2N1bWVudFJlcXVlc3QaJi5hcGkudjEuQXBwbHlHZW5lcmF0ZWREb2N1bWVudFJlc3BvbnNlIkqC0+STAkQ6ASoiPy9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS9hcHBseS1kb2N1bWVudBLMAQoaQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb24SKS5hcGkudjEuQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb25SZXF1ZXN0GiouYXBpLnYxLkNvbXBsZXRlRG9jdW1lbnRHZW5lcmF0aW9uUmVzcG9uc2UiV4LT5JMCUToBKiJML2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvZG9jdW1lbnQtZ2VuZXJhdGlvbi97d29ya2Zsb3dfcnVuX2lkfS9jb21wbGV0ZRKWAQoMVXBzZXJ0TGVkZ2VyEhsuYXBpLnYxLlVwc2VydExlZGdlclJlcXVlc3QaHC5hcGkudjEuVXBzZXJ0TGVkZ2VyUmVzcG9uc2UiS4LT5JMCRToBKhpAL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2xlZGdlchKKAQoJR2V0TGVkZ2VyEhguYXBpLnYxLkdldExlZGdlclJlcXVlc3QaGS5hcGkudjEuR2V0TGVkZ2VyUmVzcG9uc2UiSILT5JMCQhJAL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2xlZGdlckJ2Cgpjb20uYXBpLnYxQhFPcmNoZXN0cmF0b3JQcm90b1ABWhxvcHNlZS9iYWNrZW5kL2dlbi9hcGkvdjE7Z2VuogIDQVhYqgIGQXBpLlYxygIGQXBpXFYx4gISQXBpXFYxXEdQQk1ldGFkYXRh6gIHQXBpOjpWMWIGcHJvdG8z", [file_google_api_annotations, file_google_protobuf_timestamp, file_google_protobuf_struct, file_validate_validate, file_api_v1_models, file_api_v1_template_service]);
16
+ fileDesc("ChlhcGkvdjEvb3JjaGVzdHJhdG9yLnByb3RvEgZhcGkudjEimQIKFVJlZ2lzdGVyV29ya2VyUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgNEhsKCmNvbXBhbnlfaWQYAiABKA1CB/pCBCoCIAASEgoKcHJvamVjdF9pZBgDIAEoDRIZCghwb2RfbmFtZRgEIAEoCUIH+kIEcgIQARIcChRvcmNoZXN0cmF0b3JfdmVyc2lvbhgFIAEoCRItCgxjYXBhYmlsaXRpZXMYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EisKDXdvcmtmbG93X3R5cGUYByABKA4yFC5hcGkudjEuV29ya2Zsb3dUeXBlEhAKCGpvYl9uYW1lGAggASgJEhcKD3dvcmtmbG93X3J1bl9pZBgJIAEoDSKvAQoWUmVnaXN0ZXJXb3JrZXJSZXNwb25zZRIRCgl3b3JrZXJfaWQYASABKAkSFwoPd29ya2Zsb3dfcnVuX2lkGAIgASgNEicKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKaXNfcmVzdGFydBgEIAEoCBIVCg1zb3VyY2VfYnJhbmNoGAUgASgJEhUKDXNraXBfdW5pdF9pZHMYBiADKA0itAEKEEhlYXJ0YmVhdFJlcXVlc3QSGgoJd29ya2VyX2lkGAEgASgJQgf6QgRyAhABEhcKD3VuaXRzX2NvbXBsZXRlZBgCIAEoDRITCgt1bml0c190b3RhbBgDIAEoDRIUCgxjcmVkaXRzX3VzZWQYBCABKA0SFwoPZWxhcHNlZF9zZWNvbmRzGAUgASgCEhcKD2FjdGl2ZV91bml0X2lkcxgGIAMoDRIOCgZzdGF0dXMYByABKAkiPQoRSGVhcnRiZWF0UmVzcG9uc2USFwoPc2hvdWxkX2NvbnRpbnVlGAEgASgIEg8KB21lc3NhZ2UYAiABKAkiawoVR2V0VGFza0NvbnRleHRSZXF1ZXN0EhgKB3Rhc2tfaWQYASABKA1CB/pCBCoCIAASGwoKY29tcGFueV9pZBgCIAEoDUIH+kIEKgIgABIbCgpwcm9qZWN0X2lkGAMgASgNQgf6QgQqAiAAIpUDChZHZXRUYXNrQ29udGV4dFJlc3BvbnNlEhoKBHRhc2sYASABKAsyDC5hcGkudjEuVGFzaxIgCgdwcm9qZWN0GAIgASgLMg8uYXBpLnYxLlByb2plY3QSMQoRdGFza19yZXBvc2l0b3JpZXMYAyADKAsyFi5hcGkudjEuVGFza1JlcG9zaXRvcnkSMAoQdmNzX2ludGVncmF0aW9ucxgEIAMoCzIWLmFwaS52MS5WQ1NJbnRlZ3JhdGlvbhIlCgxyZWxhdGVkX2RvY3MYBSADKAsyDy5hcGkudjEuRG9jUGFnZRIrCgx3b3JrZmxvd19ydW4YBiABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1bhIpCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKwoOdGFza19kb2NfcGFnZXMYCCADKAsyEy5hcGkudjEuVGFza0RvY1BhZ2USLAoOdGFza19kb2N1bWVudHMYCSADKAsyFC5hcGkudjEuVGFza0RvY3VtZW50IqUCChBXb3JrZmxvd1VuaXRTcGVjEhgKB3RlbXBfaWQYASABKAlCB/pCBHICEAESGQoFdGl0bGUYAiABKAlCCvpCB3IFEAEY/wESEwoLZGVzY3JpcHRpb24YAyABKAkSHgoNcmVwb3NpdG9yeV9pZBgEIAEoDUIH+kIEKgIgABJHCghjYXRlZ29yeRgFIAEoCUI1+kIycjBSA2FwaVIDd2ViUgZtb2JpbGVSCGRhdGFiYXNlUgVpbmZyYVIFdGVzdHNSBGRvY3MSFgoOc2VxdWVuY2Vfb3JkZXIYBiABKAUSGwoTZGVwZW5kc19vbl90ZW1wX2lkcxgHIAMoCRIpCghtZXRhZGF0YRgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiqQEKGkNyZWF0ZVdvcmtmbG93VW5pdHNSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESMwoFdW5pdHMYAyADKAsyGC5hcGkudjEuV29ya2Zsb3dVbml0U3BlY0IK+kIHkgEECAEQZBIYChBwbGFubmluZ19jb250ZXh0GAQgASgJIssBChtDcmVhdGVXb3JrZmxvd1VuaXRzUmVzcG9uc2USJQoFdW5pdHMYASADKAsyFi5hcGkudjEuQUlXb3JrZmxvd1VuaXQSTwoPdGVtcF9pZF9tYXBwaW5nGAIgAygLMjYuYXBpLnYxLkNyZWF0ZVdvcmtmbG93VW5pdHNSZXNwb25zZS5UZW1wSWRNYXBwaW5nRW50cnkaNAoSVGVtcElkTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDToCOAEi8QIKGVVwZGF0ZVVuaXRQcm9ncmVzc1JlcXVlc3QSGAoHdW5pdF9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESXwoFc3RhZ2UYAyABKAlCUPpCTXJLUgVzdGFydFIEd29ya1IEdGVzdFICcWFSBmNvbW1pdFIGcmV2aWV3UgdjbG9uaW5nUglhbmFseXppbmdSDmNyZWF0aW5nX2ZpbGVzEk4KBnN0YXR1cxgEIAEoCUI++kI7cjlSB3BlbmRpbmdSB3J1bm5pbmdSCXN1Y2NlZWRlZFIGZmFpbGVkUgdza2lwcGVkUgljYW5jZWxsZWQSEQoJbG9nX2VudHJ5GAUgASgJEhQKDGNyZWRpdHNfdXNlZBgGIAEoDRItCgxzdGFnZV9yZXN1bHQYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKDWVycm9yX21lc3NhZ2UYCCABKAkiQgoaVXBkYXRlVW5pdFByb2dyZXNzUmVzcG9uc2USJAoEdW5pdBgBIAEoCzIWLmFwaS52MS5BSVdvcmtmbG93VW5pdCKwAgoXQ29tcGxldGVXb3JrZmxvd1JlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIzCgZzdGF0dXMYAyABKAlCI/pCIHIeUglzdWNjZWVkZWRSBmZhaWxlZFIJY2FuY2VsbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISDwoHc3VtbWFyeRgGIAEoCRIoCgdyZXN1bHRzGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIaCg1zb3VyY2VfYnJhbmNoGAggASgJSACIAQFCEAoOX3NvdXJjZV9icmFuY2giRwoYQ29tcGxldGVXb3JrZmxvd1Jlc3BvbnNlEisKDHdvcmtmbG93X3J1bhgBIAEoCzIVLmFwaS52MS5BSVdvcmtmbG93UnVuIrABChZHZXRQcm9tcHRDb25maWdSZXF1ZXN0ElwKCmFnZW50X3R5cGUYASABKAlCSPpCRXJDUgdwbGFubmVyUgVjb2RlclIGdGVzdGVyUgJxYVIIcmV2aWV3ZXJSCGFuYWx5emVyUhFzdWJ0YXNrX2dlbmVyYXRvchIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAAipQEKF0dldFByb21wdENvbmZpZ1Jlc3BvbnNlEhUKDXN5c3RlbV9wcm9tcHQYASABKAkSHAoUdXNlcl9wcm9tcHRfdGVtcGxhdGUYAiABKAkSKgoJdmFyaWFibGVzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghleGFtcGxlcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiZQoVR2V0TW9kZWxDb25maWdSZXF1ZXN0EhsKCmNvbXBhbnlfaWQYASABKA1CB/pCBCoCIAASGwoKcHJvamVjdF9pZBgCIAEoDUIH+kIEKgIgABISCgphZ2VudF90eXBlGAMgASgJIpQBChZHZXRNb2RlbENvbmZpZ1Jlc3BvbnNlEhAKCHByb3ZpZGVyGAEgASgJEg0KBW1vZGVsGAIgASgJEhIKCm1heF90b2tlbnMYAyABKAUSEwoLdGVtcGVyYXR1cmUYBCABKAESMAoPcHJvdmlkZXJfY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKGAQoWU3RhcnRBSVdvcmtmbG93UmVxdWVzdBIYCgd0YXNrX2lkGAEgASgNQgf6QgQqAiAAEhsKCmNvbXBhbnlfaWQYAiABKA1CB/pCBCoCIAASGwoKcHJvamVjdF9pZBgDIAEoDUIH+kIEKgIgABIYCgd1c2VyX2lkGAQgASgNQgf6QgQqAiAAImUKF1N0YXJ0QUlXb3JrZmxvd1Jlc3BvbnNlEhAKCGpvYl9uYW1lGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEhcKD3dvcmtmbG93X3J1bl9pZBgEIAEoDSJMChVTdG9wQUlXb3JrZmxvd1JlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIZCghqb2JfbmFtZRgCIAEoCUIH+kIEcgIQASI5ChZTdG9wQUlXb3JrZmxvd1Jlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIk0KGkdldEFJV29ya2Zsb3dTdGF0dXNSZXF1ZXN0EhkKCGpvYl9uYW1lGAEgASgJQgf6QgRyAhABEhQKDGluY2x1ZGVfbG9ncxgCIAEoCCI7ChtHZXRBSVdvcmtmbG93U3RhdHVzUmVzcG9uc2USDgoGc3RhdHVzGAEgASgJEgwKBGxvZ3MYAiABKAki8wEKHVVwZGF0ZUFuYWx5c2lzUHJvZ3Jlc3NSZXF1ZXN0EhwKC2FuYWx5c2lzX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIWCgVzdGFnZRgDIAEoCUIH+kIEcgIQARImChNwcm9ncmVzc19wZXJjZW50YWdlGAQgASgFQgn6QgYaBBhkKAASFAoMY3JlZGl0c191c2VkGAUgASgNEjEKBnN0YXR1cxgGIAEoCUIh+kIechxSB3J1bm5pbmdSCXN1Y2NlZWRlZFIGZmFpbGVkEg8KB21lc3NhZ2UYByABKAkiQgoeVXBkYXRlQW5hbHlzaXNQcm9ncmVzc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSKkAgoXQ29tcGxldGVBbmFseXNpc1JlcXVlc3QSHAoLYW5hbHlzaXNfaWQYASABKA1CB/pCBCoCIAASGgoJd29ya2VyX2lkGAIgASgJQgf6QgRyAhABEigKBnN0YXR1cxgDIAEoCUIY+kIVchNSCXN1Y2NlZWRlZFIGZmFpbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISDwoHc3VtbWFyeRgGIAEoCRIoCgdyZXN1bHRzGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCg1lcnJvcl9tZXNzYWdlGAggASgJEhgKEGhhc19vcHNlZV9jb25maWcYCSABKAgiPAoYQ29tcGxldGVBbmFseXNpc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDwoHbWVzc2FnZRgCIAEoCSK9AQoXR2VuZXJhdGVTdWJ0YXNrc1JlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAASGAoHdXNlcl9pZBgEIAEoDUIH+kIEKgIgABIfCgxtYXhfc3VidGFza3MYBSABKAVCCfpCBhoEGBQoARITCgthdXRvX2Fzc2lnbhgGIAEoCCJmChhHZW5lcmF0ZVN1YnRhc2tzUmVzcG9uc2USEAoIam9iX25hbWUYASABKAkSDgoGc3RhdHVzGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSFwoPd29ya2Zsb3dfcnVuX2lkGAQgASgNIrwCCgtTdWJ0YXNrU3BlYxIYCgd0ZW1wX2lkGAEgASgJQgf6QgRyAhABEhkKBXRpdGxlGAIgASgJQgr6QgdyBRABGP8BEhMKC2Rlc2NyaXB0aW9uGAMgASgJEh8KDHN0b3J5X3BvaW50cxgEIAEoBUIJ+kIGGgQYZCgAEigKD2VzdGltYXRlZF9ob3VycxgFIAEoAkIP+kIMCgodAAB6RC0AAAAAEhQKDHRhc2tfdHlwZV9pZBgGIAEoDRIYChB0YXNrX3ByaW9yaXR5X2lkGAcgASgNEhsKE2RlcGVuZHNfb25fdGVtcF9pZHMYCCADKAkSIAoYc3VnZ2VzdGVkX3JlcG9zaXRvcnlfaWRzGAkgAygNEikKCG1ldGFkYXRhGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoVQ3JlYXRlU3VidGFza3NSZXF1ZXN0Eh8KDnBhcmVudF90YXNrX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIxCghzdWJ0YXNrcxgDIAMoCzITLmFwaS52MS5TdWJ0YXNrU3BlY0IK+kIHkgEECAEQFBIaChJnZW5lcmF0aW9uX2NvbnRleHQYBCABKAkiugEKFkNyZWF0ZVN1YnRhc2tzUmVzcG9uc2USHgoIc3VidGFza3MYASADKAsyDC5hcGkudjEuVGFzaxJKCg90ZW1wX2lkX21hcHBpbmcYAiADKAsyMS5hcGkudjEuQ3JlYXRlU3VidGFza3NSZXNwb25zZS5UZW1wSWRNYXBwaW5nRW50cnkaNAoSVGVtcElkTWFwcGluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDToCOAEipQIKIENvbXBsZXRlU3VidGFza0dlbmVyYXRpb25SZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESMwoGc3RhdHVzGAMgASgJQiP6QiByHlIJc3VjY2VlZGVkUgZmYWlsZWRSCWNhbmNlbGxlZBIaChJ0b3RhbF9jcmVkaXRzX3VzZWQYBCABKA0SHQoVdG90YWxfZWxhcHNlZF9zZWNvbmRzGAUgASgCEhgKEHN1YnRhc2tzX2NyZWF0ZWQYBiABKAUSDwoHc3VtbWFyeRgHIAEoCRIoCgdyZXN1bHRzGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJQCiFDb21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVzcG9uc2USKwoMd29ya2Zsb3dfcnVuGAEgASgLMhUuYXBpLnYxLkFJV29ya2Zsb3dSdW4ijAEKHEV4cGFuZFRhc2tEZXNjcmlwdGlvblJlcXVlc3QSGAoHdGFza19pZBgBIAEoDUIH+kIEKgIgABIbCgpjb21wYW55X2lkGAIgASgNQgf6QgQqAiAAEhsKCnByb2plY3RfaWQYAyABKA1CB/pCBCoCIAASGAoHdXNlcl9pZBgEIAEoDUIH+kIEKgIgACJrCh1FeHBhbmRUYXNrRGVzY3JpcHRpb25SZXNwb25zZRIQCghqb2JfbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIXCg93b3JrZmxvd19ydW5faWQYBCABKA0iQQodR2V0RXhwYW5kZWREZXNjcmlwdGlvblJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAInoKHkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXNwb25zZRIOCgZzdGF0dXMYASABKAkSMQoGcmVzdWx0GAIgASgLMiEuYXBpLnYxLkV4cGFuZGVkRGVzY3JpcHRpb25SZXN1bHQSFQoNZXJyb3JfbWVzc2FnZRgDIAEoCSKdAgoZRXhwYW5kZWREZXNjcmlwdGlvblJlc3VsdBIQCghvdmVydmlldxgBIAEoCRIPCgdkZXRhaWxzGAIgASgJEhkKEXRlY2huaWNhbF9jb250ZXh0GAMgASgJEjgKE2FjY2VwdGFuY2VfY3JpdGVyaWEYBCADKAsyGy5hcGkudjEuQWNjZXB0YW5jZUNyaXRlcmlvbhIuCg90ZWNobmljYWxfaGludHMYBSADKAsyFS5hcGkudjEuVGVjaG5pY2FsSGludBIaChJzdWdnZXN0ZWRfYXBwcm9hY2gYBiABKAkSHAoUZXN0aW1hdGVkX2NvbXBsZXhpdHkYByABKAkSHgoWZGVzY3JpcHRpb25fYmxvY2tfanNvbhgIIAEoCSJEChNBY2NlcHRhbmNlQ3JpdGVyaW9uEgoKAmlkGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEgwKBHR5cGUYAyABKAkiPgoNVGVjaG5pY2FsSGludBIQCghjYXRlZ29yeRgBIAEoCRIMCgRoaW50GAIgASgJEg0KBWZpbGVzGAMgAygJIokBCh9BcHBseUV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIjChtpbmNsdWRlX2FjY2VwdGFuY2VfY3JpdGVyaWEYAiABKAgSHwoXaW5jbHVkZV90ZWNobmljYWxfaGludHMYAyABKAgiaAogQXBwbHlFeHBhbmRlZERlc2NyaXB0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIPCgdtZXNzYWdlGAIgASgJEiIKDHVwZGF0ZWRfdGFzaxgDIAEoCzIMLmFwaS52MS5UYXNrIvkBCiNDb21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVxdWVzdBIgCg93b3JrZmxvd19ydW5faWQYASABKA1CB/pCBCoCIAASGgoJd29ya2VyX2lkGAIgASgJQgf6QgRyAhABEjMKBnN0YXR1cxgDIAEoCUIj+kIgch5SCXN1Y2NlZWRlZFIGZmFpbGVkUgljYW5jZWxsZWQSGgoSdG90YWxfY3JlZGl0c191c2VkGAQgASgNEh0KFXRvdGFsX2VsYXBzZWRfc2Vjb25kcxgFIAEoAhIPCgdzdW1tYXJ5GAYgASgJEhMKC3Jlc3VsdF9qc29uGAcgASgJIlMKJENvbXBsZXRlRGVzY3JpcHRpb25FeHBhbnNpb25SZXNwb25zZRIrCgx3b3JrZmxvd19ydW4YASABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1biJ2ChNVcHNlcnRMZWRnZXJSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIcCgtsZWRnZXJfanNvbhgCIAEoDEIH+kIEegIQAhIfCg5zY2hlbWFfdmVyc2lvbhgDIAEoBUIH+kIEGgIoASInChRVcHNlcnRMZWRnZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjQKEEdldExlZGdlclJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAIkAKEUdldExlZGdlclJlc3BvbnNlEhMKC2xlZGdlcl9qc29uGAEgASgMEhYKDnNjaGVtYV92ZXJzaW9uGAIgASgFIuYBCiFDb21wbGV0ZURvY3VtZW50R2VuZXJhdGlvblJlcXVlc3QSIAoPd29ya2Zsb3dfcnVuX2lkGAEgASgNQgf6QgQqAiAAEhoKCXdvcmtlcl9pZBgCIAEoCUIH+kIEcgIQARIzCgZzdGF0dXMYAyABKAlCI/pCIHIeUglzdWNjZWVkZWRSBmZhaWxlZFIJY2FuY2VsbGVkEhoKEnRvdGFsX2NyZWRpdHNfdXNlZBgEIAEoDRIdChV0b3RhbF9lbGFwc2VkX3NlY29uZHMYBSABKAISEwoLcmVzdWx0X2pzb24YBiABKAkiUQoiQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb25SZXNwb25zZRIrCgx3b3JrZmxvd19ydW4YASABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1biKmAQoPUmV2aWV3UFJSZXF1ZXN0EhgKB3Rhc2tfaWQYASABKA1CB/pCBCoCIAASGwoKY29tcGFueV9pZBgCIAEoDUIH+kIEKgIgABIbCgpwcm9qZWN0X2lkGAMgASgNQgf6QgQqAiAAEhgKB3VzZXJfaWQYBCABKA1CB/pCBCoCIAASJQoUdGFza19wdWxsX3JlcXVlc3RfaWQYBSABKA1CB/pCBCoCIAAiXgoQUmV2aWV3UFJSZXNwb25zZRIQCghqb2JfbmFtZRgBIAEoCRIOCgZzdGF0dXMYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIXCg93b3JrZmxvd19ydW5faWQYBCABKA0iWQoPUFJSZXZpZXdGaW5kaW5nEhAKCGNhdGVnb3J5GAEgASgJEhAKCHNldmVyaXR5GAIgASgJEg0KBXRpdGxlGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJIjwKGEdldFBSUmV2aWV3UmVzdWx0UmVxdWVzdBIgCg93b3JrZmxvd19ydW5faWQYASABKA1CB/pCBCoCIAAifgoZR2V0UFJSZXZpZXdSZXN1bHRSZXNwb25zZRIOCgZzdGF0dXMYASABKAkSDwoHc3VtbWFyeRgCIAEoCRIpCghmaW5kaW5ncxgDIAMoCzIXLmFwaS52MS5QUlJldmlld0ZpbmRpbmcSFQoNZXJyb3JfbWVzc2FnZRgEIAEoCSI3ChNQb3N0UFJSZXZpZXdSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgACJQChRQb3N0UFJSZXZpZXdSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg8KB21lc3NhZ2UYAiABKAkSFgoOcHJfY29tbWVudF91cmwYAyABKAki3AEKF0NvbXBsZXRlUFJSZXZpZXdSZXF1ZXN0EiAKD3dvcmtmbG93X3J1bl9pZBgBIAEoDUIH+kIEKgIgABIaCgl3b3JrZXJfaWQYAiABKAlCB/pCBHICEAESMwoGc3RhdHVzGAMgASgJQiP6QiByHlIJc3VjY2VlZGVkUgZmYWlsZWRSCWNhbmNlbGxlZBIaChJ0b3RhbF9jcmVkaXRzX3VzZWQYBCABKA0SHQoVdG90YWxfZWxhcHNlZF9zZWNvbmRzGAUgASgCEhMKC3Jlc3VsdF9qc29uGAYgASgJIkcKGENvbXBsZXRlUFJSZXZpZXdSZXNwb25zZRIrCgx3b3JrZmxvd19ydW4YASABKAsyFS5hcGkudjEuQUlXb3JrZmxvd1J1biJjCgpQUkRpZmZGaWxlEhAKCGZpbGVuYW1lGAEgASgJEg0KBXBhdGNoGAIgASgJEhEKCWFkZGl0aW9ucxgDIAEoBRIRCglkZWxldGlvbnMYBCABKAUSDgoGc3RhdHVzGAUgASgJIlYKEEdldFBSRGlmZlJlcXVlc3QSJQoUdGFza19wdWxsX3JlcXVlc3RfaWQYASABKA1CB/pCBCoCIAASGwoKY29tcGFueV9pZBgCIAEoDUIH+kIEKgIgACJoChFHZXRQUkRpZmZSZXNwb25zZRIhCgVmaWxlcxgBIAMoCzISLmFwaS52MS5QUkRpZmZGaWxlEhcKD3RvdGFsX2FkZGl0aW9ucxgCIAEoBRIXCg90b3RhbF9kZWxldGlvbnMYAyABKAUq8QEKDFdvcmtmbG93VHlwZRIdChlXT1JLRkxPV19UWVBFX1VOU1BFQ0lGSUVEEAASFgoSV09SS0ZMT1dfVFlQRV9UQVNLEAESGQoVV09SS0ZMT1dfVFlQRV9BTkFMWVpFEAISJAogV09SS0ZMT1dfVFlQRV9TVUJUQVNLX0dFTkVSQVRJT04QAxInCiNXT1JLRkxPV19UWVBFX0RFU0NSSVBUSU9OX0VYUEFOU0lPThAEEiMKH1dPUktGTE9XX1RZUEVfR0VORVJBVEVfRE9DVU1FTlQQBRIbChdXT1JLRkxPV19UWVBFX1BSX1JFVklFVxAGMtgnChNPcmNoZXN0cmF0b3JTZXJ2aWNlEooBCg5SZWdpc3RlcldvcmtlchIdLmFwaS52MS5SZWdpc3RlcldvcmtlclJlcXVlc3QaHi5hcGkudjEuUmVnaXN0ZXJXb3JrZXJSZXNwb25zZSI5gtPkkwIzOgEqIi4vYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZXJzL3JlZ2lzdGVyEogBCglIZWFydGJlYXQSGC5hcGkudjEuSGVhcnRiZWF0UmVxdWVzdBoZLmFwaS52MS5IZWFydGJlYXRSZXNwb25zZSJGgtPkkwJAOgEqIjsvYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZXJzL3t3b3JrZXJfaWR9L2hlYXJ0YmVhdBKOAQoOR2V0VGFza0NvbnRleHQSHS5hcGkudjEuR2V0VGFza0NvbnRleHRSZXF1ZXN0Gh4uYXBpLnYxLkdldFRhc2tDb250ZXh0UmVzcG9uc2UiPYLT5JMCNxI1L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdGFza3Mve3Rhc2tfaWR9L2NvbnRleHQSqgEKE0NyZWF0ZVdvcmtmbG93VW5pdHMSIi5hcGkudjEuQ3JlYXRlV29ya2Zsb3dVbml0c1JlcXVlc3QaIy5hcGkudjEuQ3JlYXRlV29ya2Zsb3dVbml0c1Jlc3BvbnNlIkqC0+STAkQ6ASoiPy9hcGkvdjEvaW50ZXJuYWwvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS91bml0cxKeAQoSVXBkYXRlVW5pdFByb2dyZXNzEiEuYXBpLnYxLlVwZGF0ZVVuaXRQcm9ncmVzc1JlcXVlc3QaIi5hcGkudjEuVXBkYXRlVW5pdFByb2dyZXNzUmVzcG9uc2UiQYLT5JMCOzoBKho2L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdW5pdHMve3VuaXRfaWR9L3Byb2dyZXNzEqQBChBDb21wbGV0ZVdvcmtmbG93Eh8uYXBpLnYxLkNvbXBsZXRlV29ya2Zsb3dSZXF1ZXN0GiAuYXBpLnYxLkNvbXBsZXRlV29ya2Zsb3dSZXNwb25zZSJNgtPkkwJHOgEqIkIvYXBpL3YxL2ludGVybmFsL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vY29tcGxldGUSlQEKD0dldFByb21wdENvbmZpZxIeLmFwaS52MS5HZXRQcm9tcHRDb25maWdSZXF1ZXN0Gh8uYXBpLnYxLkdldFByb21wdENvbmZpZ1Jlc3BvbnNlIkGC0+STAjsSOS9hcGkvdjEvaW50ZXJuYWwvb3JjaGVzdHJhdG9yL2NvbmZpZy9wcm9tcHRzL3thZ2VudF90eXBlfRKEAQoOR2V0TW9kZWxDb25maWcSHS5hcGkudjEuR2V0TW9kZWxDb25maWdSZXF1ZXN0Gh4uYXBpLnYxLkdldE1vZGVsQ29uZmlnUmVzcG9uc2UiM4LT5JMCLRIrL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvY29uZmlnL21vZGVscxKxAQoWVXBkYXRlQW5hbHlzaXNQcm9ncmVzcxIlLmFwaS52MS5VcGRhdGVBbmFseXNpc1Byb2dyZXNzUmVxdWVzdBomLmFwaS52MS5VcGRhdGVBbmFseXNpc1Byb2dyZXNzUmVzcG9uc2UiSILT5JMCQjoBKho9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvYW5hbHlzaXMve2FuYWx5c2lzX2lkfS9wcm9ncmVzcxKfAQoQQ29tcGxldGVBbmFseXNpcxIfLmFwaS52MS5Db21wbGV0ZUFuYWx5c2lzUmVxdWVzdBogLmFwaS52MS5Db21wbGV0ZUFuYWx5c2lzUmVzcG9uc2UiSILT5JMCQjoBKiI9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvYW5hbHlzaXMve2FuYWx5c2lzX2lkfS9jb21wbGV0ZRKDAQoPU3RhcnRBSVdvcmtmbG93Eh4uYXBpLnYxLlN0YXJ0QUlXb3JrZmxvd1JlcXVlc3QaHy5hcGkudjEuU3RhcnRBSVdvcmtmbG93UmVzcG9uc2UiL4LT5JMCKToBKiIkL2FwaS92MS9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3N0YXJ0En8KDlN0b3BBSVdvcmtmbG93Eh0uYXBpLnYxLlN0b3BBSVdvcmtmbG93UmVxdWVzdBoeLmFwaS52MS5TdG9wQUlXb3JrZmxvd1Jlc3BvbnNlIi6C0+STAig6ASoiIy9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy9zdG9wEpgBChNHZXRBSVdvcmtmbG93U3RhdHVzEiIuYXBpLnYxLkdldEFJV29ya2Zsb3dTdGF0dXNSZXF1ZXN0GiMuYXBpLnYxLkdldEFJV29ya2Zsb3dTdGF0dXNSZXNwb25zZSI4gtPkkwIyEjAvYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve2pvYl9uYW1lfS9zdGF0dXMSmAEKEEdlbmVyYXRlU3VidGFza3MSHy5hcGkudjEuR2VuZXJhdGVTdWJ0YXNrc1JlcXVlc3QaIC5hcGkudjEuR2VuZXJhdGVTdWJ0YXNrc1Jlc3BvbnNlIkGC0+STAjs6ASoiNi9hcGkvdjEvb3JjaGVzdHJhdG9yL3Rhc2tzL3t0YXNrX2lkfS9nZW5lcmF0ZS1zdWJ0YXNrcxKZAQoOQ3JlYXRlU3VidGFza3MSHS5hcGkudjEuQ3JlYXRlU3VidGFza3NSZXF1ZXN0Gh4uYXBpLnYxLkNyZWF0ZVN1YnRhc2tzUmVzcG9uc2UiSILT5JMCQjoBKiI9L2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdGFza3Mve3BhcmVudF90YXNrX2lkfS9zdWJ0YXNrcxLIAQoZQ29tcGxldGVTdWJ0YXNrR2VuZXJhdGlvbhIoLmFwaS52MS5Db21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVxdWVzdBopLmFwaS52MS5Db21wbGV0ZVN1YnRhc2tHZW5lcmF0aW9uUmVzcG9uc2UiVoLT5JMCUDoBKiJLL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivc3VidGFzay1nZW5lcmF0aW9uL3t3b3JrZmxvd19ydW5faWR9L2NvbXBsZXRlEqgBChVFeHBhbmRUYXNrRGVzY3JpcHRpb24SJC5hcGkudjEuRXhwYW5kVGFza0Rlc2NyaXB0aW9uUmVxdWVzdBolLmFwaS52MS5FeHBhbmRUYXNrRGVzY3JpcHRpb25SZXNwb25zZSJCgtPkkwI8OgEqIjcvYXBpL3YxL29yY2hlc3RyYXRvci90YXNrcy97dGFza19pZH0vZXhwYW5kLWRlc2NyaXB0aW9uErYBChZHZXRFeHBhbmRlZERlc2NyaXB0aW9uEiUuYXBpLnYxLkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0GiYuYXBpLnYxLkdldEV4cGFuZGVkRGVzY3JpcHRpb25SZXNwb25zZSJNgtPkkwJHEkUvYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vZXhwYW5kZWQtZGVzY3JpcHRpb24SvAEKGEFwcGx5RXhwYW5kZWREZXNjcmlwdGlvbhInLmFwaS52MS5BcHBseUV4cGFuZGVkRGVzY3JpcHRpb25SZXF1ZXN0GiguYXBpLnYxLkFwcGx5RXhwYW5kZWREZXNjcmlwdGlvblJlc3BvbnNlIk2C0+STAkc6ASoiQi9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS9hcHBseS1kZXNjcmlwdGlvbhLUAQocQ29tcGxldGVEZXNjcmlwdGlvbkV4cGFuc2lvbhIrLmFwaS52MS5Db21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVxdWVzdBosLmFwaS52MS5Db21wbGV0ZURlc2NyaXB0aW9uRXhwYW5zaW9uUmVzcG9uc2UiWYLT5JMCUzoBKiJOL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvZGVzY3JpcHRpb24tZXhwYW5zaW9uL3t3b3JrZmxvd19ydW5faWR9L2NvbXBsZXRlEqwBChdTdGFydERvY3VtZW50R2VuZXJhdGlvbhImLmFwaS52MS5TdGFydERvY3VtZW50R2VuZXJhdGlvblJlcXVlc3QaJy5hcGkudjEuU3RhcnREb2N1bWVudEdlbmVyYXRpb25SZXNwb25zZSJAgtPkkwI6OgEqIjUvYXBpL3YxL29yY2hlc3RyYXRvci90ZW1wbGF0ZXMve3RlbXBsYXRlX2lkfS9nZW5lcmF0ZRLEAQobR2V0RG9jdW1lbnRHZW5lcmF0aW9uUmVzdWx0EiouYXBpLnYxLkdldERvY3VtZW50R2VuZXJhdGlvblJlc3VsdFJlcXVlc3QaKy5hcGkudjEuR2V0RG9jdW1lbnRHZW5lcmF0aW9uUmVzdWx0UmVzcG9uc2UiTILT5JMCRhJEL2FwaS92MS9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2RvY3VtZW50LWdlbmVyYXRpb24SswEKFkFwcGx5R2VuZXJhdGVkRG9jdW1lbnQSJS5hcGkudjEuQXBwbHlHZW5lcmF0ZWREb2N1bWVudFJlcXVlc3QaJi5hcGkudjEuQXBwbHlHZW5lcmF0ZWREb2N1bWVudFJlc3BvbnNlIkqC0+STAkQ6ASoiPy9hcGkvdjEvb3JjaGVzdHJhdG9yL3dvcmtmbG93cy97d29ya2Zsb3dfcnVuX2lkfS9hcHBseS1kb2N1bWVudBLMAQoaQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb24SKS5hcGkudjEuQ29tcGxldGVEb2N1bWVudEdlbmVyYXRpb25SZXF1ZXN0GiouYXBpLnYxLkNvbXBsZXRlRG9jdW1lbnRHZW5lcmF0aW9uUmVzcG9uc2UiV4LT5JMCUToBKiJML2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvZG9jdW1lbnQtZ2VuZXJhdGlvbi97d29ya2Zsb3dfcnVuX2lkfS9jb21wbGV0ZRJ4CghSZXZpZXdQUhIXLmFwaS52MS5SZXZpZXdQUlJlcXVlc3QaGC5hcGkudjEuUmV2aWV3UFJSZXNwb25zZSI5gtPkkwIzOgEqIi4vYXBpL3YxL29yY2hlc3RyYXRvci90YXNrcy97dGFza19pZH0vcmV2aWV3LXByEpwBChFHZXRQUlJldmlld1Jlc3VsdBIgLmFwaS52MS5HZXRQUlJldmlld1Jlc3VsdFJlcXVlc3QaIS5hcGkudjEuR2V0UFJSZXZpZXdSZXN1bHRSZXNwb25zZSJCgtPkkwI8EjovYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vcHItcmV2aWV3EpUBCgxQb3N0UFJSZXZpZXcSGy5hcGkudjEuUG9zdFBSUmV2aWV3UmVxdWVzdBocLmFwaS52MS5Qb3N0UFJSZXZpZXdSZXNwb25zZSJKgtPkkwJEOgEqIj8vYXBpL3YxL29yY2hlc3RyYXRvci93b3JrZmxvd3Mve3dvcmtmbG93X3J1bl9pZH0vcG9zdC1wci1yZXZpZXcSpAEKEENvbXBsZXRlUFJSZXZpZXcSHy5hcGkudjEuQ29tcGxldGVQUlJldmlld1JlcXVlc3QaIC5hcGkudjEuQ29tcGxldGVQUlJldmlld1Jlc3BvbnNlIk2C0+STAkc6ASoiQi9hcGkvdjEvaW50ZXJuYWwvb3JjaGVzdHJhdG9yL3ByLXJldmlldy97d29ya2Zsb3dfcnVuX2lkfS9jb21wbGV0ZRKWAQoJR2V0UFJEaWZmEhguYXBpLnYxLkdldFBSRGlmZlJlcXVlc3QaGS5hcGkudjEuR2V0UFJEaWZmUmVzcG9uc2UiVILT5JMCThJML2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3IvdGFzay1wdWxsLXJlcXVlc3RzL3t0YXNrX3B1bGxfcmVxdWVzdF9pZH0vZGlmZhKWAQoMVXBzZXJ0TGVkZ2VyEhsuYXBpLnYxLlVwc2VydExlZGdlclJlcXVlc3QaHC5hcGkudjEuVXBzZXJ0TGVkZ2VyUmVzcG9uc2UiS4LT5JMCRToBKhpAL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2xlZGdlchKKAQoJR2V0TGVkZ2VyEhguYXBpLnYxLkdldExlZGdlclJlcXVlc3QaGS5hcGkudjEuR2V0TGVkZ2VyUmVzcG9uc2UiSILT5JMCQhJAL2FwaS92MS9pbnRlcm5hbC9vcmNoZXN0cmF0b3Ivd29ya2Zsb3dzL3t3b3JrZmxvd19ydW5faWR9L2xlZGdlckJ2Cgpjb20uYXBpLnYxQhFPcmNoZXN0cmF0b3JQcm90b1ABWhxvcHNlZS9iYWNrZW5kL2dlbi9hcGkvdjE7Z2VuogIDQVhYqgIGQXBpLlYxygIGQXBpXFYx4gISQXBpXFYxXEdQQk1ldGFkYXRh6gIHQXBpOjpWMWIGcHJvdG8z", [file_google_api_annotations, file_google_protobuf_timestamp, file_google_protobuf_struct, file_validate_validate, file_api_v1_models, file_api_v1_template_service]);
17
17
 
18
18
  /**
19
19
  * Describes the message api.v1.RegisterWorkerRequest.
@@ -372,6 +372,90 @@ export const CompleteDocumentGenerationRequestSchema = /*@__PURE__*/
372
372
  export const CompleteDocumentGenerationResponseSchema = /*@__PURE__*/
373
373
  messageDesc(file_api_v1_orchestrator, 50);
374
374
 
375
+ /**
376
+ * Describes the message api.v1.ReviewPRRequest.
377
+ * Use `create(ReviewPRRequestSchema)` to create a new message.
378
+ */
379
+ export const ReviewPRRequestSchema = /*@__PURE__*/
380
+ messageDesc(file_api_v1_orchestrator, 51);
381
+
382
+ /**
383
+ * Describes the message api.v1.ReviewPRResponse.
384
+ * Use `create(ReviewPRResponseSchema)` to create a new message.
385
+ */
386
+ export const ReviewPRResponseSchema = /*@__PURE__*/
387
+ messageDesc(file_api_v1_orchestrator, 52);
388
+
389
+ /**
390
+ * Describes the message api.v1.PRReviewFinding.
391
+ * Use `create(PRReviewFindingSchema)` to create a new message.
392
+ */
393
+ export const PRReviewFindingSchema = /*@__PURE__*/
394
+ messageDesc(file_api_v1_orchestrator, 53);
395
+
396
+ /**
397
+ * Describes the message api.v1.GetPRReviewResultRequest.
398
+ * Use `create(GetPRReviewResultRequestSchema)` to create a new message.
399
+ */
400
+ export const GetPRReviewResultRequestSchema = /*@__PURE__*/
401
+ messageDesc(file_api_v1_orchestrator, 54);
402
+
403
+ /**
404
+ * Describes the message api.v1.GetPRReviewResultResponse.
405
+ * Use `create(GetPRReviewResultResponseSchema)` to create a new message.
406
+ */
407
+ export const GetPRReviewResultResponseSchema = /*@__PURE__*/
408
+ messageDesc(file_api_v1_orchestrator, 55);
409
+
410
+ /**
411
+ * Describes the message api.v1.PostPRReviewRequest.
412
+ * Use `create(PostPRReviewRequestSchema)` to create a new message.
413
+ */
414
+ export const PostPRReviewRequestSchema = /*@__PURE__*/
415
+ messageDesc(file_api_v1_orchestrator, 56);
416
+
417
+ /**
418
+ * Describes the message api.v1.PostPRReviewResponse.
419
+ * Use `create(PostPRReviewResponseSchema)` to create a new message.
420
+ */
421
+ export const PostPRReviewResponseSchema = /*@__PURE__*/
422
+ messageDesc(file_api_v1_orchestrator, 57);
423
+
424
+ /**
425
+ * Describes the message api.v1.CompletePRReviewRequest.
426
+ * Use `create(CompletePRReviewRequestSchema)` to create a new message.
427
+ */
428
+ export const CompletePRReviewRequestSchema = /*@__PURE__*/
429
+ messageDesc(file_api_v1_orchestrator, 58);
430
+
431
+ /**
432
+ * Describes the message api.v1.CompletePRReviewResponse.
433
+ * Use `create(CompletePRReviewResponseSchema)` to create a new message.
434
+ */
435
+ export const CompletePRReviewResponseSchema = /*@__PURE__*/
436
+ messageDesc(file_api_v1_orchestrator, 59);
437
+
438
+ /**
439
+ * Describes the message api.v1.PRDiffFile.
440
+ * Use `create(PRDiffFileSchema)` to create a new message.
441
+ */
442
+ export const PRDiffFileSchema = /*@__PURE__*/
443
+ messageDesc(file_api_v1_orchestrator, 60);
444
+
445
+ /**
446
+ * Describes the message api.v1.GetPRDiffRequest.
447
+ * Use `create(GetPRDiffRequestSchema)` to create a new message.
448
+ */
449
+ export const GetPRDiffRequestSchema = /*@__PURE__*/
450
+ messageDesc(file_api_v1_orchestrator, 61);
451
+
452
+ /**
453
+ * Describes the message api.v1.GetPRDiffResponse.
454
+ * Use `create(GetPRDiffResponseSchema)` to create a new message.
455
+ */
456
+ export const GetPRDiffResponseSchema = /*@__PURE__*/
457
+ messageDesc(file_api_v1_orchestrator, 62);
458
+
375
459
  /**
376
460
  * Describes the enum api.v1.WorkflowType.
377
461
  */
@@ -14,7 +14,7 @@ import { file_api_v1_models } from "./models_pb";
14
14
  * Describes the file api/v1/project.proto.
15
15
  */
16
16
  export const file_api_v1_project = /*@__PURE__*/
17
- fileDesc("ChRhcGkvdjEvcHJvamVjdC5wcm90bxIGYXBpLnYxIu0BChFBZGRQcm9qZWN0UmVxdWVzdBIXCgRuYW1lGAEgASgJQgn6QgZyBBABGGQSFwoEc2x1ZxgCIAEoCUIJ+kIGcgQQARgyEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoJaXNfYWN0aXZlGAQgASgIEhoKDXNldHRpbmdzX2pzb24YBSABKAlIAYgBARISCgpjb21wYW55X2lkGAYgASgNEicKCnNob3J0X25hbWUYByABKAlCE/pCEHIOEAEYBDIIXltBLVpdKyRCDgoMX2Rlc2NyaXB0aW9uQhAKDl9zZXR0aW5nc19qc29uIoMCChJFZGl0UHJvamVjdFJlcXVlc3QSEwoCaWQYASABKA1CB/pCBCoCKAESFwoEbmFtZRgCIAEoCUIJ+kIGcgQQARhkEhcKBHNsdWcYAyABKAlCCfpCBnIEEAEYMhIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgFIAEoCBIaCg1zZXR0aW5nc19qc29uGAYgASgJSAGIAQESEgoKY29tcGFueV9pZBgHIAEoDRInCgpzaG9ydF9uYW1lGAggASgJQhP6QhByDhABGAQyCF5bQS1aXSskQg4KDF9kZXNjcmlwdGlvbkIQCg5fc2V0dGluZ3NfanNvbiIfChFHZXRQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoDSIxChdHZXRQcm9qZWN0QnlVVUlEUmVxdWVzdBIWCgR1dWlkGAEgASgJQgj6QgVyA7ABASJ1ChJHZXRQcm9qZWN0c1JlcXVlc3QSMAoKcGFnaW5hdGlvbhgBIAEoCzISLmFwaS52MS5QYWdpbmF0aW9uQgj6QgWKAQIQARItCg5maWx0ZXJfb3B0aW9ucxgCIAEoCzIVLmFwaS52MS5GaWx0ZXJPcHRpb25zIiIKFERlbGV0ZVByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgNImAKE0dldFByb2plY3RzUmVzcG9uc2USIQoIcHJvamVjdHMYASADKAsyDy5hcGkudjEuUHJvamVjdBImCgpwYWdpbmF0aW9uGAIgASgLMhIuYXBpLnYxLlBhZ2luYXRpb24iNgoSQWRkUHJvamVjdFJlc3BvbnNlEiAKB3Byb2plY3QYASABKAsyDy5hcGkudjEuUHJvamVjdCI3ChNFZGl0UHJvamVjdFJlc3BvbnNlEiAKB3Byb2plY3QYASABKAsyDy5hcGkudjEuUHJvamVjdCI2ChJHZXRQcm9qZWN0UmVzcG9uc2USIAoHcHJvamVjdBgBIAEoCzIPLmFwaS52MS5Qcm9qZWN0IkoKE1NoYXJlUHJvamVjdFJlcXVlc3QSGwoKcHJvamVjdF9pZBgBIAEoDUIH+kIEKgIoARIWCgVlbWFpbBgCIAEoCUIH+kIEcgJgASInChRTaGFyZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi8KEkFjY2VwdFNoYXJlUmVxdWVzdBIZCghzaGFyZV9pZBgBIAEoDUIH+kIEKgIoASImChNBY2NlcHRTaGFyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGgoYR2V0UGVuZGluZ0ludml0ZXNSZXF1ZXN0IkEKGUdldFBlbmRpbmdJbnZpdGVzUmVzcG9uc2USJAoGc2hhcmVzGAEgAygLMhQuYXBpLnYxLlByb2plY3RTaGFyZSKRAQoMUHJvamVjdFNoYXJlEgoKAmlkGAEgASgNEhIKCnByb2plY3RfaWQYAiABKA0SIAoHcHJvamVjdBgDIAEoCzIPLmFwaS52MS5Qcm9qZWN0EhQKDGludml0ZV9lbWFpbBgEIAEoCRIOCgZzdGF0dXMYBSABKAkSGQoRdGFyZ2V0X2NvbXBhbnlfaWQYBiABKA0y7QcKDlByb2plY3RTZXJ2aWNlEmAKCkFkZFByb2plY3QSGS5hcGkudjEuQWRkUHJvamVjdFJlcXVlc3QaGi5hcGkudjEuQWRkUHJvamVjdFJlc3BvbnNlIhuC0+STAhU6ASoiEC9hcGkvdjEvcHJvamVjdHMSaAoLRWRpdFByb2plY3QSGi5hcGkudjEuRWRpdFByb2plY3RSZXF1ZXN0GhsuYXBpLnYxLkVkaXRQcm9qZWN0UmVzcG9uc2UiIILT5JMCGjoBKhoVL2FwaS92MS9wcm9qZWN0cy97aWR9EmIKCkdldFByb2plY3QSGS5hcGkudjEuR2V0UHJvamVjdFJlcXVlc3QaGi5hcGkudjEuR2V0UHJvamVjdFJlc3BvbnNlIh2C0+STAhcSFS9hcGkvdjEvcHJvamVjdHMve2lkfRJ1ChBHZXRQcm9qZWN0QnlVVUlEEh8uYXBpLnYxLkdldFByb2plY3RCeVVVSURSZXF1ZXN0GhouYXBpLnYxLkdldFByb2plY3RSZXNwb25zZSIkgtPkkwIeEhwvYXBpL3YxL3Byb2plY3RzL3V1aWQve3V1aWR9EmAKC0dldFByb2plY3RzEhouYXBpLnYxLkdldFByb2plY3RzUmVxdWVzdBobLmFwaS52MS5HZXRQcm9qZWN0c1Jlc3BvbnNlIhiC0+STAhISEC9hcGkvdjEvcHJvamVjdHMSZAoNRGVsZXRlUHJvamVjdBIcLmFwaS52MS5EZWxldGVQcm9qZWN0UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIdgtPkkwIXKhUvYXBpL3YxL3Byb2plY3RzL3tpZH0SbAoMU2hhcmVQcm9qZWN0EhsuYXBpLnYxLlNoYXJlUHJvamVjdFJlcXVlc3QaHC5hcGkudjEuU2hhcmVQcm9qZWN0UmVzcG9uc2UiIYLT5JMCGzoBKiIWL2FwaS92MS9wcm9qZWN0cy9zaGFyZRJ7CgtBY2NlcHRTaGFyZRIaLmFwaS52MS5BY2NlcHRTaGFyZVJlcXVlc3QaGy5hcGkudjEuQWNjZXB0U2hhcmVSZXNwb25zZSIzgtPkkwItOgEqIigvYXBpL3YxL3Byb2plY3RzL3NoYXJlL3tzaGFyZV9pZH0vYWNjZXB0EoABChFHZXRQZW5kaW5nSW52aXRlcxIgLmFwaS52MS5HZXRQZW5kaW5nSW52aXRlc1JlcXVlc3QaIS5hcGkudjEuR2V0UGVuZGluZ0ludml0ZXNSZXNwb25zZSImgtPkkwIgEh4vYXBpL3YxL3Byb2plY3RzL3NoYXJlL3BlbmRpbmdCcQoKY29tLmFwaS52MUIMUHJvamVjdFByb3RvUAFaHG9wc2VlL2JhY2tlbmQvZ2VuL2FwaS92MTtnZW6iAgNBWFiqAgZBcGkuVjHKAgZBcGlcVjHiAhJBcGlcVjFcR1BCTWV0YWRhdGHqAgdBcGk6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_google_api_annotations, file_validate_validate, file_api_v1_pagination, file_api_v1_filter, file_api_v1_models]);
17
+ fileDesc("ChRhcGkvdjEvcHJvamVjdC5wcm90bxIGYXBpLnYxIusBChFBZGRQcm9qZWN0UmVxdWVzdBIXCgRuYW1lGAEgASgJQgn6QgZyBBABGGQSFQoEc2x1ZxgCIAEoCUIH+kIEcgIYMhIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgEIAEoCBIaCg1zZXR0aW5nc19qc29uGAUgASgJSAGIAQESEgoKY29tcGFueV9pZBgGIAEoDRInCgpzaG9ydF9uYW1lGAcgASgJQhP6QhByDhABGAQyCF5bQS1aXSskQg4KDF9kZXNjcmlwdGlvbkIQCg5fc2V0dGluZ3NfanNvbiKBAgoSRWRpdFByb2plY3RSZXF1ZXN0EhMKAmlkGAEgASgNQgf6QgQqAigBEhcKBG5hbWUYAiABKAlCCfpCBnIEEAEYZBIVCgRzbHVnGAMgASgJQgf6QgRyAhgyEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEQoJaXNfYWN0aXZlGAUgASgIEhoKDXNldHRpbmdzX2pzb24YBiABKAlIAYgBARISCgpjb21wYW55X2lkGAcgASgNEicKCnNob3J0X25hbWUYCCABKAlCE/pCEHIOEAEYBDIIXltBLVpdKyRCDgoMX2Rlc2NyaXB0aW9uQhAKDl9zZXR0aW5nc19qc29uIh8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgNIjEKF0dldFByb2plY3RCeVVVSURSZXF1ZXN0EhYKBHV1aWQYASABKAlCCPpCBXIDsAEBInUKEkdldFByb2plY3RzUmVxdWVzdBIwCgpwYWdpbmF0aW9uGAEgASgLMhIuYXBpLnYxLlBhZ2luYXRpb25CCPpCBYoBAhABEi0KDmZpbHRlcl9vcHRpb25zGAIgASgLMhUuYXBpLnYxLkZpbHRlck9wdGlvbnMiIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKA0iYAoTR2V0UHJvamVjdHNSZXNwb25zZRIhCghwcm9qZWN0cxgBIAMoCzIPLmFwaS52MS5Qcm9qZWN0EiYKCnBhZ2luYXRpb24YAiABKAsyEi5hcGkudjEuUGFnaW5hdGlvbiI2ChJBZGRQcm9qZWN0UmVzcG9uc2USIAoHcHJvamVjdBgBIAEoCzIPLmFwaS52MS5Qcm9qZWN0IjcKE0VkaXRQcm9qZWN0UmVzcG9uc2USIAoHcHJvamVjdBgBIAEoCzIPLmFwaS52MS5Qcm9qZWN0IjYKEkdldFByb2plY3RSZXNwb25zZRIgCgdwcm9qZWN0GAEgASgLMg8uYXBpLnYxLlByb2plY3QiSgoTU2hhcmVQcm9qZWN0UmVxdWVzdBIbCgpwcm9qZWN0X2lkGAEgASgNQgf6QgQqAigBEhYKBWVtYWlsGAIgASgJQgf6QgRyAmABIicKFFNoYXJlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLwoSQWNjZXB0U2hhcmVSZXF1ZXN0EhkKCHNoYXJlX2lkGAEgASgNQgf6QgQqAigBIiYKE0FjY2VwdFNoYXJlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIaChhHZXRQZW5kaW5nSW52aXRlc1JlcXVlc3QiQQoZR2V0UGVuZGluZ0ludml0ZXNSZXNwb25zZRIkCgZzaGFyZXMYASADKAsyFC5hcGkudjEuUHJvamVjdFNoYXJlIpEBCgxQcm9qZWN0U2hhcmUSCgoCaWQYASABKA0SEgoKcHJvamVjdF9pZBgCIAEoDRIgCgdwcm9qZWN0GAMgASgLMg8uYXBpLnYxLlByb2plY3QSFAoMaW52aXRlX2VtYWlsGAQgASgJEg4KBnN0YXR1cxgFIAEoCRIZChF0YXJnZXRfY29tcGFueV9pZBgGIAEoDTLtBwoOUHJvamVjdFNlcnZpY2USYAoKQWRkUHJvamVjdBIZLmFwaS52MS5BZGRQcm9qZWN0UmVxdWVzdBoaLmFwaS52MS5BZGRQcm9qZWN0UmVzcG9uc2UiG4LT5JMCFToBKiIQL2FwaS92MS9wcm9qZWN0cxJoCgtFZGl0UHJvamVjdBIaLmFwaS52MS5FZGl0UHJvamVjdFJlcXVlc3QaGy5hcGkudjEuRWRpdFByb2plY3RSZXNwb25zZSIggtPkkwIaOgEqGhUvYXBpL3YxL3Byb2plY3RzL3tpZH0SYgoKR2V0UHJvamVjdBIZLmFwaS52MS5HZXRQcm9qZWN0UmVxdWVzdBoaLmFwaS52MS5HZXRQcm9qZWN0UmVzcG9uc2UiHYLT5JMCFxIVL2FwaS92MS9wcm9qZWN0cy97aWR9EnUKEEdldFByb2plY3RCeVVVSUQSHy5hcGkudjEuR2V0UHJvamVjdEJ5VVVJRFJlcXVlc3QaGi5hcGkudjEuR2V0UHJvamVjdFJlc3BvbnNlIiSC0+STAh4SHC9hcGkvdjEvcHJvamVjdHMvdXVpZC97dXVpZH0SYAoLR2V0UHJvamVjdHMSGi5hcGkudjEuR2V0UHJvamVjdHNSZXF1ZXN0GhsuYXBpLnYxLkdldFByb2plY3RzUmVzcG9uc2UiGILT5JMCEhIQL2FwaS92MS9wcm9qZWN0cxJkCg1EZWxldGVQcm9qZWN0EhwuYXBpLnYxLkRlbGV0ZVByb2plY3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih2C0+STAhcqFS9hcGkvdjEvcHJvamVjdHMve2lkfRJsCgxTaGFyZVByb2plY3QSGy5hcGkudjEuU2hhcmVQcm9qZWN0UmVxdWVzdBocLmFwaS52MS5TaGFyZVByb2plY3RSZXNwb25zZSIhgtPkkwIbOgEqIhYvYXBpL3YxL3Byb2plY3RzL3NoYXJlEnsKC0FjY2VwdFNoYXJlEhouYXBpLnYxLkFjY2VwdFNoYXJlUmVxdWVzdBobLmFwaS52MS5BY2NlcHRTaGFyZVJlc3BvbnNlIjOC0+STAi06ASoiKC9hcGkvdjEvcHJvamVjdHMvc2hhcmUve3NoYXJlX2lkfS9hY2NlcHQSgAEKEUdldFBlbmRpbmdJbnZpdGVzEiAuYXBpLnYxLkdldFBlbmRpbmdJbnZpdGVzUmVxdWVzdBohLmFwaS52MS5HZXRQZW5kaW5nSW52aXRlc1Jlc3BvbnNlIiaC0+STAiASHi9hcGkvdjEvcHJvamVjdHMvc2hhcmUvcGVuZGluZ0JxCgpjb20uYXBpLnYxQgxQcm9qZWN0UHJvdG9QAVocb3BzZWUvYmFja2VuZC9nZW4vYXBpL3YxO2dlbqICA0FYWKoCBkFwaS5WMcoCBkFwaVxWMeICEkFwaVxWMVxHUEJNZXRhZGF0YeoCB0FwaTo6VjFiBnByb3RvMw", [file_google_protobuf_empty, file_google_api_annotations, file_validate_validate, file_api_v1_pagination, file_api_v1_filter, file_api_v1_models]);
18
18
 
19
19
  /**
20
20
  * Describes the message api.v1.AddProjectRequest.
@@ -611,6 +611,43 @@ export declare type BulkEditTasksResponse = Message<"api.v1.BulkEditTasksRespons
611
611
  */
612
612
  export declare const BulkEditTasksResponseSchema: GenMessage<BulkEditTasksResponse>;
613
613
 
614
+ /**
615
+ * @generated from message api.v1.BulkDeleteTasksRequest
616
+ */
617
+ export declare type BulkDeleteTasksRequest = Message<"api.v1.BulkDeleteTasksRequest"> & {
618
+ /**
619
+ * @generated from field: uint32 project_id = 1;
620
+ */
621
+ projectId: number;
622
+
623
+ /**
624
+ * @generated from field: repeated uint32 task_ids = 2;
625
+ */
626
+ taskIds: number[];
627
+ };
628
+
629
+ /**
630
+ * Describes the message api.v1.BulkDeleteTasksRequest.
631
+ * Use `create(BulkDeleteTasksRequestSchema)` to create a new message.
632
+ */
633
+ export declare const BulkDeleteTasksRequestSchema: GenMessage<BulkDeleteTasksRequest>;
634
+
635
+ /**
636
+ * @generated from message api.v1.BulkDeleteTasksResponse
637
+ */
638
+ export declare type BulkDeleteTasksResponse = Message<"api.v1.BulkDeleteTasksResponse"> & {
639
+ /**
640
+ * @generated from field: int32 deleted_count = 1;
641
+ */
642
+ deletedCount: number;
643
+ };
644
+
645
+ /**
646
+ * Describes the message api.v1.BulkDeleteTasksResponse.
647
+ * Use `create(BulkDeleteTasksResponseSchema)` to create a new message.
648
+ */
649
+ export declare const BulkDeleteTasksResponseSchema: GenMessage<BulkDeleteTasksResponse>;
650
+
614
651
  /**
615
652
  * @generated from message api.v1.AddWorkLogRequest
616
653
  */
@@ -776,5 +813,13 @@ export declare const TaskService: GenService<{
776
813
  input: typeof BulkEditTasksRequestSchema;
777
814
  output: typeof BulkEditTasksResponseSchema;
778
815
  },
816
+ /**
817
+ * @generated from rpc api.v1.TaskService.BulkDeleteTasks
818
+ */
819
+ bulkDeleteTasks: {
820
+ methodKind: "unary";
821
+ input: typeof BulkDeleteTasksRequestSchema;
822
+ output: typeof BulkDeleteTasksResponseSchema;
823
+ },
779
824
  }>;
780
825