Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
ca213437
Commit
ca213437
authored
Sep 21, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: implement nesting lists
parent
7a4d54bb
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
685 additions
and
455 deletions
+685
-455
apidocs.swagger.yaml
docs/apidocs.swagger.yaml
+214
-64
go.mod
go.mod
+1
-1
go.sum
go.sum
+2
-2
markdown_service.proto
proto/api/v1/markdown_service.proto
+9
-1
markdown_service.pb.go
proto/gen/api/v1/markdown_service.pb.go
+371
-292
markdown_service.go
server/router/api/v1/markdown_service.go
+29
-2
List.tsx
web/src/components/MemoContent/List.tsx
+36
-14
OrderedListItem.tsx
web/src/components/MemoContent/OrderedListItem.tsx
+5
-18
TaskListItem.tsx
web/src/components/MemoContent/TaskListItem.tsx
+10
-18
UnorderedListItem.tsx
web/src/components/MemoContent/UnorderedListItem.tsx
+5
-18
index.tsx
web/src/components/MemoEditor/index.tsx
+1
-1
UserBanner.tsx
web/src/components/UserBanner.tsx
+2
-2
tailwind.config.js
web/tailwind.config.js
+0
-14
vercel.json
web/vercel.json
+0
-8
No files found.
docs/apidocs.swagger.yaml
View file @
ca213437
...
...
@@ -300,12 +300,16 @@ paths:
type
:
integer
format
:
int32
-
name
:
pageToken
description
:
"
A
page
token,
received
from
a
previous
`ListMemos`
call.
\r\n
Provide
this
to
retrieve
the
subsequent
page."
description
:
|-
A page token, received from a previous `ListMemos` call.
Provide this to retrieve the subsequent page.
in: query
required: false
type: string
-
name
:
filter
description
:
"
Filter
is
used
to
filter
memos
returned
in
the
list.
\r\n
Format:
\"
creator
==
'users/{uid}'
&&
visibilities
==
['PUBLIC',
'PROTECTED']
\"
"
description
:
|-
Filter is used to filter memos returned in the list.
Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']"
in: query
required: false
type: string
...
...
@@ -480,7 +484,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
filter
description
:
"
Filter
is
used
to
filter
users
returned
in
the
list.
\r\n
Format:
\"
username
==
'frank'
\"
"
description
:
|-
Filter is used to filter users returned in the list.
Format: "username == 'frank'"
in: query
required: false
type: string
...
...
@@ -641,7 +647,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
resource
name
of
the
workspace
setting.
\r\n
Format:
settings/{setting}"
description
:
|-
The resource name of the workspace setting.
Format: settings/{setting}
in: path
required: true
type: string
...
...
@@ -663,7 +671,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
setting.name
description
:
"
name
is
the
name
of
the
setting.
\r\n
Format:
settings/{setting}"
description
:
|-
name is the name of the setting.
Format: settings/{setting}
in: path
required: true
type: string
...
...
@@ -699,7 +709,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
identityProvider.name
description
:
"
The
name
of
the
identityProvider.
\r\n
Format:
identityProviders/{id}"
description
:
|-
The name of the identityProvider.
Format: identityProviders/{id}
in: path
required: true
type: string
...
...
@@ -737,7 +749,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
inbox.name
description
:
"
The
name
of
the
inbox.
\r\n
Format:
inboxes/{id}"
description
:
|-
The name of the inbox.
Format: inboxes/{id}
in: path
required: true
type: string
...
...
@@ -781,7 +795,10 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
memo.name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}
\r\n
id
is
the
system
generated
id."
description
:
|-
The name of the memo.
Format: memos/{id}
id is the system generated id.
in: path
required: true
type: string
...
...
@@ -799,7 +816,9 @@ paths:
$ref
:
'
#/definitions/v1RowStatus'
creator
:
type
:
string
title
:
"
The
name
of
the
creator.
\r\n
Format:
users/{id}"
title
:
|-
The name of the creator.
Format: users/{id}
createTime
:
type
:
string
format
:
date-time
...
...
@@ -852,7 +871,9 @@ paths:
readOnly
:
true
parent
:
type
:
string
title
:
"
The
name
of
the
parent
memo.
\r\n
Format:
memos/{id}"
title
:
|-
The name of the parent memo.
Format: memos/{id}
readOnly: true
snippet
:
type
:
string
...
...
@@ -874,7 +895,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_1
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -896,7 +919,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_1
description
:
"
The
name
of
the
identityProvider
to
delete.
\r\n
Format:
identityProviders/{id}"
description
:
|-
The name of the identityProvider to delete.
Format: identityProviders/{id}
in: path
required: true
type: string
...
...
@@ -918,7 +943,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_2
description
:
"
The
name
of
the
identityProvider
to
get.
\r\n
Format:
identityProviders/{id}"
description
:
|-
The name of the identityProvider to get.
Format: identityProviders/{id}
in: path
required: true
type: string
...
...
@@ -940,7 +967,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_2
description
:
"
The
name
of
the
inbox
to
delete.
\r\n
Format:
inboxes/{id}"
description
:
|-
The name of the inbox to delete.
Format: inboxes/{id}
in: path
required: true
type: string
...
...
@@ -962,7 +991,10 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_3
description
:
"
The
name
of
the
resource.
\r\n
Format:
resources/{id}
\r\n
id
is
the
system
generated
unique
identifier."
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
in: path
required: true
type: string
...
...
@@ -984,7 +1016,10 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_3
description
:
"
The
name
of
the
resource.
\r\n
Format:
resources/{id}
\r\n
id
is
the
system
generated
unique
identifier."
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
in: path
required: true
type: string
...
...
@@ -1006,7 +1041,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_4
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1028,7 +1065,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name_4
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1050,7 +1089,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
activity.
\r\n
Format:
activities/{id}"
description
:
|-
The name of the activity.
Format: activities/{id}
in: path
required: true
type: string
...
...
@@ -1072,7 +1113,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1094,7 +1137,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1115,7 +1160,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1143,7 +1190,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1170,7 +1219,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1191,7 +1242,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1218,7 +1271,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}.
Use
\"
memos/-
\"
to
list
all
properties."
description
:
|-
The name of the memo.
Format: memos/{id}. Use "memos/-" to list all properties.
in: path
required: true
type: string
...
...
@@ -1241,7 +1296,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}.
Use
\"
memos/-
\"
to
rebuild
all
memos."
description
:
|-
The name of the memo.
Format: memos/{id}. Use "memos/-" to rebuild all memos.
in: path
required: true
type: string
...
...
@@ -1268,7 +1325,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1289,7 +1348,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1316,7 +1377,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1338,7 +1401,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1365,7 +1430,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1387,7 +1454,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}"
description
:
|-
The name of the memo.
Format: memos/{id}
in: path
required: true
type: string
...
...
@@ -1414,7 +1483,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1436,13 +1507,17 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
parent
description
:
"
The
parent,
who
owns
the
tags.
\r\n
Format:
memos/{id}.
Use
\"
memos/-
\"
to
list
all
tags."
description
:
|-
The parent, who owns the tags.
Format: memos/{id}. Use "memos/-" to list all tags.
in: path
required: true
type: string
pattern: memos/[^/]+
-
name
:
filter
description
:
"
Filter
is
used
to
filter
memos.
\r\n
Format:
\"
creator
==
'users/{uid}'
&&
visibilities
==
['PUBLIC',
'PROTECTED']
\"
"
description
:
|-
Filter is used to filter memos.
Format: "creator == 'users/{uid}' && visibilities == ['PUBLIC', 'PROTECTED']"
in: query
required: false
type: string
...
...
@@ -1464,7 +1539,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
parent
description
:
"
The
parent,
who
owns
the
tags.
\r\n
Format:
memos/{id}.
Use
\"
memos/-
\"
to
delete
all
tags."
description
:
|-
The parent, who owns the tags.
Format: memos/{id}. Use "memos/-" to delete all tags.
in: path
required: true
type: string
...
...
@@ -1495,7 +1572,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
parent
description
:
"
The
parent,
who
owns
the
tags.
\r\n
Format:
memos/{id}.
Use
\"
memos/-
\"
to
rename
all
tags."
description
:
|-
The parent, who owns the tags.
Format: memos/{id}. Use "memos/-" to rename all tags.
in: path
required: true
type: string
...
...
@@ -1522,7 +1601,10 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
resource.name
description
:
"
The
name
of
the
resource.
\r\n
Format:
resources/{id}
\r\n
id
is
the
system
generated
unique
identifier."
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
in: path
required: true
type: string
...
...
@@ -1554,7 +1636,9 @@ paths:
format
:
int64
memo
:
type
:
string
title
:
"
The
related
memo.
\r\n
Format:
memos/{id}"
title
:
|-
The related memo.
Format: memos/{id}
tags
:
-
ResourceService
/api/v1/{setting.name}
:
...
...
@@ -1572,7 +1656,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
setting.name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1609,7 +1695,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
user.name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1663,7 +1751,9 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
description
:
|-
The name of the user.
Format: users/{id}
in: path
required: true
type: string
...
...
@@ -1696,7 +1786,10 @@ paths:
$ref
:
'
#/definitions/googlerpcStatus'
parameters
:
-
name
:
name
description
:
"
The
name
of
the
resource.
\r\n
Format:
resources/{id}
\r\n
id
is
the
system
generated
unique
identifier."
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
in: path
required: true
type: string
...
...
@@ -1714,6 +1807,14 @@ paths:
tags
:
-
ResourceService
definitions
:
ListNodeKind
:
type
:
string
enum
:
-
KIND_UNSPECIFIED
-
ORDERED
-
UNORDERED
-
DESCRIPTION
default
:
KIND_UNSPECIFIED
MemoServiceRebuildMemoPropertyBody
:
type
:
object
MemoServiceRenameMemoTagBody
:
...
...
@@ -1883,7 +1984,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
identityProvider.
\r\n
Format:
identityProviders/{id}"
title
:
|-
The name of the identityProvider.
Format: identityProviders/{id}
type
:
$ref
:
'
#/definitions/apiv1IdentityProviderType'
title
:
...
...
@@ -1927,7 +2030,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
title
:
|-
The name of the user.
Format: users/{id}
locale
:
type
:
string
description
:
The preferred locale of the user.
...
...
@@ -1971,7 +2076,10 @@ definitions:
weekStartDayOffset
:
type
:
integer
format
:
int32
description
:
"
week_start_day_offset
is
the
week
start
day
offset
from
Sunday.
\r\n
0:
Sunday,
1:
Monday,
2:
Tuesday,
3:
Wednesday,
4:
Thursday,
5:
Friday,
6:
Saturday
\r\n
Default
is
Sunday."
description
:
|-
week_start_day_offset is the week start day offset from Sunday.
0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday
Default is Sunday.
disallowChangeUsername
:
type
:
boolean
description
:
disallow_change_username disallows changing username.
...
...
@@ -2008,7 +2116,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
name
is
the
name
of
the
setting.
\r\n
Format:
settings/{setting}"
title
:
|-
name is the name of the setting.
Format: settings/{setting}
generalSetting
:
$ref
:
'
#/definitions/apiv1WorkspaceGeneralSetting'
storageSetting
:
...
...
@@ -2023,7 +2133,9 @@ definitions:
description
:
storage_type is the storage type.
filepathTemplate
:
type
:
string
title
:
"
The
template
of
file
path.
\r\n
e.g.
assets/{timestamp}_{filename}"
title
:
|-
The template of file path.
e.g. assets/{timestamp}_{filename}
uploadSizeLimitMb
:
type
:
string
format
:
int64
...
...
@@ -2182,7 +2294,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
activity.
\r\n
Format:
activities/{id}"
title
:
|-
The name of the activity.
Format: activities/{id}
creatorId
:
type
:
integer
format
:
int32
...
...
@@ -2313,7 +2427,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
inbox.
\r\n
Format:
inboxes/{id}"
title
:
|-
The name of the inbox.
Format: inboxes/{id}
sender
:
type
:
string
title
:
'
Format:
users/{id}'
...
...
@@ -2433,7 +2549,10 @@ definitions:
additionalProperties
:
type
:
integer
format
:
int32
description
:
"
tag_amounts
is
the
amount
of
tags.
\r\n
key
is
the
tag
name.
e.g.
\"
tag1
\"
.
\r\n
value
is
the
amount
of
the
tag."
description
:
|-
tag_amounts is the amount of tags.
key is the tag name. e.g. "tag1".
value is the amount of the tag.
v1ListMemosResponse
:
type
:
object
properties
:
...
...
@@ -2444,10 +2563,17 @@ definitions:
$ref
:
'
#/definitions/v1Memo'
nextPageToken
:
type
:
string
description
:
"
A
token,
which
can
be
sent
as
`page_token`
to
retrieve
the
next
page.
\r\n
If
this
field
is
omitted,
there
are
no
subsequent
pages."
description
:
|-
A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages.
v1ListNode
:
type
:
object
properties
:
kind
:
$ref
:
'
#/definitions/ListNodeKind'
indent
:
type
:
integer
format
:
int32
children
:
type
:
array
items
:
...
...
@@ -2500,7 +2626,10 @@ definitions:
properties
:
name
:
type
:
string
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{id}
\r\n
id
is
the
system
generated
id."
description
:
|-
The name of the memo.
Format: memos/{id}
id is the system generated id.
uid
:
type
:
string
description
:
The user defined id of the memo.
...
...
@@ -2508,7 +2637,9 @@ definitions:
$ref
:
'
#/definitions/v1RowStatus'
creator
:
type
:
string
title
:
"
The
name
of
the
creator.
\r\n
Format:
users/{id}"
title
:
|-
The name of the creator.
Format: users/{id}
createTime
:
type
:
string
format
:
date-time
...
...
@@ -2561,7 +2692,9 @@ definitions:
readOnly
:
true
parent
:
type
:
string
title
:
"
The
name
of
the
parent
memo.
\r\n
Format:
memos/{id}"
title
:
|-
The name of the parent memo.
Format: memos/{id}
readOnly: true
snippet
:
type
:
string
...
...
@@ -2586,7 +2719,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
memo
property.
\r\n
Format:
memos/{id}/properties/{property_id}"
title
:
|-
The name of the memo property.
Format: memos/{id}/properties/{property_id}
property
:
$ref
:
'
#/definitions/v1MemoProperty'
readOnly
:
true
...
...
@@ -2599,10 +2734,14 @@ definitions:
properties
:
memo
:
type
:
string
title
:
"
The
name
of
memo.
\r\n
Format:
\"
memos/{uid}
\"
"
title
:
|-
The name of memo.
Format: "memos/{uid}"
relatedMemo
:
type
:
string
title
:
"
The
name
of
related
memo.
\r\n
Format:
\"
memos/{uid}
\"
"
title
:
|-
The name of related memo.
Format: "memos/{uid}"
type
:
$ref
:
'
#/definitions/v1MemoRelationType'
v1MemoRelationType
:
...
...
@@ -2762,7 +2901,9 @@ definitions:
format
:
int32
creator
:
type
:
string
title
:
"
The
name
of
the
creator.
\r\n
Format:
users/{id}"
title
:
|-
The name of the creator.
Format: users/{id}
contentId
:
type
:
string
reactionType
:
...
...
@@ -2796,7 +2937,10 @@ definitions:
properties
:
name
:
type
:
string
description
:
"
The
name
of
the
resource.
\r\n
Format:
resources/{id}
\r\n
id
is
the
system
generated
unique
identifier."
description
:
|-
The name of the resource.
Format: resources/{id}
id is the system generated unique identifier.
uid
:
type
:
string
description
:
The user defined id of the resource.
...
...
@@ -2818,7 +2962,9 @@ definitions:
format
:
int64
memo
:
type
:
string
title
:
"
The
related
memo.
\r\n
Format:
memos/{id}"
title
:
|-
The related memo.
Format: memos/{id}
v1RestoreMarkdownNodesRequest
:
type
:
object
properties
:
...
...
@@ -2940,7 +3086,9 @@ definitions:
properties
:
name
:
type
:
string
title
:
"
The
name
of
the
user.
\r\n
Format:
users/{id}"
title
:
|-
The name of the user.
Format: users/{id}
id
:
type
:
integer
format
:
int32
...
...
@@ -3014,7 +3162,9 @@ definitions:
properties
:
owner
:
type
:
string
title
:
"
The
name
of
instance
owner.
\r\n
Format:
\"
users/{id}
\"
"
title
:
|-
The name of instance owner.
Format: "users/{id}"
version
:
type
:
string
title
:
version is the current version of instance
...
...
go.mod
View file @
ca213437
...
...
@@ -23,7 +23,7 @@ require (
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.9.0
github.com/usememos/gomark v0.0.0-2024092
0000613-9640de1955cd
github.com/usememos/gomark v0.0.0-2024092
1115339-c9d3461efcd8
golang.org/x/crypto v0.27.0
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
golang.org/x/mod v0.21.0
...
...
go.sum
View file @
ca213437
...
...
@@ -438,8 +438,8 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/usememos/gomark v0.0.0-2024092
0000613-9640de1955cd h1:tqBJ00an5/MWAu1pIFkyE9TCSIe1JYAhShJlVeveYgs
=
github.com/usememos/gomark v0.0.0-2024092
0000613-9640de1955cd
/go.mod h1:7CZRoYFQyyljzplOTeyODFR26O+wr0BbnpTWVLGfKJA=
github.com/usememos/gomark v0.0.0-2024092
1115339-c9d3461efcd8 h1:kutNP+XD8oiBzoJJER35fbVaphCeRhU1dKDjZ5eKT0M
=
github.com/usememos/gomark v0.0.0-2024092
1115339-c9d3461efcd8
/go.mod h1:7CZRoYFQyyljzplOTeyODFR26O+wr0BbnpTWVLGfKJA=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
...
...
proto/api/v1/markdown_service.proto
View file @
ca213437
...
...
@@ -173,7 +173,15 @@ message BlockquoteNode {
}
message
ListNode
{
repeated
Node
children
=
1
;
enum
Kind
{
KIND_UNSPECIFIED
=
0
;
ORDERED
=
1
;
UNORDERED
=
2
;
DESCRIPTION
=
3
;
}
Kind
kind
=
1
;
int32
indent
=
2
;
repeated
Node
children
=
3
;
}
message
OrderedListItemNode
{
...
...
proto/gen/api/v1/markdown_service.pb.go
View file @
ca213437
...
...
@@ -159,6 +159,58 @@ func (NodeType) EnumDescriptor() ([]byte, []int) {
return
file_api_v1_markdown_service_proto_rawDescGZIP
(),
[]
int
{
0
}
}
type
ListNode_Kind
int32
const
(
ListNode_KIND_UNSPECIFIED
ListNode_Kind
=
0
ListNode_ORDERED
ListNode_Kind
=
1
ListNode_UNORDERED
ListNode_Kind
=
2
ListNode_DESCRIPTION
ListNode_Kind
=
3
)
// Enum value maps for ListNode_Kind.
var
(
ListNode_Kind_name
=
map
[
int32
]
string
{
0
:
"KIND_UNSPECIFIED"
,
1
:
"ORDERED"
,
2
:
"UNORDERED"
,
3
:
"DESCRIPTION"
,
}
ListNode_Kind_value
=
map
[
string
]
int32
{
"KIND_UNSPECIFIED"
:
0
,
"ORDERED"
:
1
,
"UNORDERED"
:
2
,
"DESCRIPTION"
:
3
,
}
)
func
(
x
ListNode_Kind
)
Enum
()
*
ListNode_Kind
{
p
:=
new
(
ListNode_Kind
)
*
p
=
x
return
p
}
func
(
x
ListNode_Kind
)
String
()
string
{
return
protoimpl
.
X
.
EnumStringOf
(
x
.
Descriptor
(),
protoreflect
.
EnumNumber
(
x
))
}
func
(
ListNode_Kind
)
Descriptor
()
protoreflect
.
EnumDescriptor
{
return
file_api_v1_markdown_service_proto_enumTypes
[
1
]
.
Descriptor
()
}
func
(
ListNode_Kind
)
Type
()
protoreflect
.
EnumType
{
return
&
file_api_v1_markdown_service_proto_enumTypes
[
1
]
}
func
(
x
ListNode_Kind
)
Number
()
protoreflect
.
EnumNumber
{
return
protoreflect
.
EnumNumber
(
x
)
}
// Deprecated: Use ListNode_Kind.Descriptor instead.
func
(
ListNode_Kind
)
EnumDescriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v1_markdown_service_proto_rawDescGZIP
(),
[]
int
{
15
,
0
}
}
type
ParseMarkdownRequest
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
...
...
@@ -1342,7 +1394,9 @@ type ListNode struct {
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
Children
[]
*
Node
`protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty"`
Kind
ListNode_Kind
`protobuf:"varint,1,opt,name=kind,proto3,enum=memos.api.v1.ListNode_Kind" json:"kind,omitempty"`
Indent
int32
`protobuf:"varint,2,opt,name=indent,proto3" json:"indent,omitempty"`
Children
[]
*
Node
`protobuf:"bytes,3,rep,name=children,proto3" json:"children,omitempty"`
}
func
(
x
*
ListNode
)
Reset
()
{
...
...
@@ -1377,6 +1431,20 @@ func (*ListNode) Descriptor() ([]byte, []int) {
return
file_api_v1_markdown_service_proto_rawDescGZIP
(),
[]
int
{
15
}
}
func
(
x
*
ListNode
)
GetKind
()
ListNode_Kind
{
if
x
!=
nil
{
return
x
.
Kind
}
return
ListNode_KIND_UNSPECIFIED
}
func
(
x
*
ListNode
)
GetIndent
()
int32
{
if
x
!=
nil
{
return
x
.
Indent
}
return
0
}
func
(
x
*
ListNode
)
GetChildren
()
[]
*
Node
{
if
x
!=
nil
{
return
x
.
Children
...
...
@@ -2906,203 +2974,212 @@ var file_api_v1_markdown_service_proto_rawDesc = []byte{
0x6b
,
0x71
,
0x75
,
0x6f
,
0x74
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x3a
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x75
,
0x0a
,
0x13
,
0x4f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x77
,
0x0a
,
0x15
,
0x55
,
0x6e
,
0x6f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x8e
,
0x01
,
0x0a
,
0x10
,
0x54
,
0x61
,
0x73
,
0x6b
,
0x4c
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0xce
,
0x01
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x6b
,
0x69
,
0x6e
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0e
,
0x32
,
0x1b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x4b
,
0x69
,
0x6e
,
0x64
,
0x52
,
0x04
,
0x6b
,
0x69
,
0x6e
,
0x64
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x49
,
0x0a
,
0x04
,
0x4b
,
0x69
,
0x6e
,
0x64
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x4b
,
0x49
,
0x4e
,
0x44
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x10
,
0x02
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x44
,
0x45
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x49
,
0x4f
,
0x4e
,
0x10
,
0x03
,
0x22
,
0x75
,
0x0a
,
0x13
,
0x4f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x77
,
0x0a
,
0x15
,
0x55
,
0x6e
,
0x6f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0xb7
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x12
,
0x1c
,
0x0a
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x2f
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x28
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x22
,
0x52
,
0x0a
,
0x13
,
0x45
,
0x6d
,
0x62
,
0x65
,
0x64
,
0x64
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x54
,
0x65
,
0x78
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x52
,
0x0a
,
0x08
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x3e
,
0x0a
,
0x0a
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x42
,
0x0a
,
0x0e
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x38
,
0x0a
,
0x09
,
0x49
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x61
,
0x6c
,
0x74
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x61
,
0x6c
,
0x74
,
0x54
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x30
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0c
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x12
,
0x1e
,
0x0a
,
0x0b
,
0x69
,
0x73
,
0x5f
,
0x72
,
0x61
,
0x77
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x09
,
0x69
,
0x73
,
0x52
,
0x61
,
0x77
,
0x54
,
0x65
,
0x78
,
0x74
,
0x22
,
0x23
,
0x0a
,
0x07
,
0x54
,
0x61
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x8e
,
0x01
,
0x0a
,
0x10
,
0x54
,
0x61
,
0x73
,
0x6b
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2d
,
0x0a
,
0x11
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6b
,
0x65
,
0x74
,
0x68
,
0x72
,
0x6f
,
0x75
,
0x67
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2f
,
0x0a
,
0x15
,
0x45
,
0x73
,
0x63
,
0x61
,
0x70
,
0x69
,
0x6e
,
0x67
,
0x43
,
0x68
,
0x61
,
0x72
,
0x61
,
0x63
,
0x74
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x4e
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0xb7
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x12
,
0x1c
,
0x0a
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x2f
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x28
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x22
,
0x52
,
0x0a
,
0x13
,
0x45
,
0x6d
,
0x62
,
0x65
,
0x64
,
0x64
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x54
,
0x65
,
0x78
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x52
,
0x0a
,
0x08
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x3e
,
0x0a
,
0x0a
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x42
,
0x0a
,
0x0e
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x38
,
0x0a
,
0x09
,
0x49
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x61
,
0x6c
,
0x74
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x61
,
0x6c
,
0x74
,
0x54
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x30
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0c
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x12
,
0x1e
,
0x0a
,
0x0b
,
0x69
,
0x73
,
0x5f
,
0x72
,
0x61
,
0x77
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x09
,
0x69
,
0x73
,
0x52
,
0x61
,
0x77
,
0x54
,
0x65
,
0x78
,
0x74
,
0x22
,
0x23
,
0x0a
,
0x07
,
0x54
,
0x61
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2d
,
0x0a
,
0x11
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6b
,
0x65
,
0x74
,
0x68
,
0x72
,
0x6f
,
0x75
,
0x67
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2f
,
0x0a
,
0x15
,
0x45
,
0x73
,
0x63
,
0x61
,
0x70
,
0x69
,
0x6e
,
0x67
,
0x43
,
0x68
,
0x61
,
0x72
,
0x61
,
0x63
,
0x74
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x48
,
0x69
,
0x67
,
0x68
,
0x6c
,
0x69
,
0x67
,
0x68
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x
48
,
0x69
,
0x67
,
0x68
,
0x6c
,
0x69
,
0x67
,
0x68
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0d
,
0x
53
,
0x75
,
0x62
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2
9
,
0x0a
,
0x0d
,
0x53
,
0x75
,
0x62
,
0x73
,
0x
63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x
74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x6
5
,
0x6e
,
0x74
,
0x22
,
0x2b
,
0x0a
,
0x0f
,
0x53
,
0x75
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x
70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x
74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x
22
,
0x54
,
0x0a
,
0x15
,
0x52
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6
e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x
6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x
52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x
0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x7
0
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x27
,
0x0a
,
0x0b
,
0x53
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x
72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x
18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x
ba
,
0x01
,
0x0a
,
0x0f
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x
6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x74
,
0x61
,
0x67
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x
01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x74
,
0x61
,
0x67
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x4d
,
0x
0a
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x18
,
0x02
,
0x20
,
0x03
,
0x
28
,
0x0b
,
0x32
,
0x2d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x
31
,
0x2e
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x
65
,
0x2e
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x45
,
0x6e
,
0x74
,
0x72
,
0x
79
,
0x52
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x1a
,
0x3d
,
0x0a
,
0x
0f
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x45
,
0x6e
,
0x74
,
0x72
,
0x79
,
0x
12
,
0x10
,
0x0a
,
0x03
,
0x6b
,
0x65
,
0x79
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x6b
,
0x
65
,
0x79
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x
09
,
0x52
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x3a
,
0x02
,
0x38
,
0x01
,
0x2a
,
0x83
,
0x04
,
0x0a
,
0x
08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x4
5
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x
0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x41
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x
0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x48
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x
0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x
0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x12
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x
4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x55
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x
12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x4f
,
0x54
,
0x45
,
0x10
,
0x06
,
0x
12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x15
,
0x0a
,
0x11
,
0x4f
,
0x5
2
,
0x
44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x5f
,
0x49
,
0x54
,
0x45
,
0x4d
,
0x10
,
0x
08
,
0x12
,
0x17
,
0x0a
,
0x13
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x4
9
,
0x53
,
0x54
,
0x5f
,
0x49
,
0x54
,
0x45
,
0x4d
,
0x10
,
0x09
,
0x12
,
0x12
,
0x0a
,
0x0e
,
0x54
,
0x41
,
0x
53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x5f
,
0x49
,
0x54
,
0x45
,
0x4d
,
0x10
,
0x0a
,
0x12
,
0x0e
,
0x
0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x0b
,
0x12
,
0x09
,
0x0a
,
0x0
5
,
0x54
,
0x41
,
0x42
,
0x4c
,
0x45
,
0x10
,
0x0c
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x45
,
0x4d
,
0x42
,
0x4
5
,
0x44
,
0x44
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x
08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x58
,
0x54
,
0x10
,
0x33
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x42
,
0x4f
,
0x4c
,
0x
44
,
0x10
,
0x34
,
0x12
,
0x0a
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x35
,
0x12
,
0x
0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x5f
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x36
,
0x
12
,
0x08
,
0x0a
,
0x04
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x10
,
0x37
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x49
,
0x4
d
,
0x
41
,
0x47
,
0x45
,
0x10
,
0x38
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x39
,
0x12
,
0x
0d
,
0x0a
,
0x09
,
0x41
,
0x55
,
0x54
,
0x4f
,
0x5f
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x3a
,
0x12
,
0x07
,
0x
0a
,
0x03
,
0x54
,
0x41
,
0x47
,
0x10
,
0x3b
,
0x12
,
0x11
,
0x0a
,
0x0d
,
0x53
,
0x54
,
0x52
,
0x49
,
0x4b
,
0x
45
,
0x54
,
0x48
,
0x52
,
0x4f
,
0x55
,
0x47
,
0x48
,
0x10
,
0x3c
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x45
,
0x53
,
0x
43
,
0x41
,
0x50
,
0x49
,
0x4e
,
0x47
,
0x5f
,
0x43
,
0x48
,
0x41
,
0x52
,
0x41
,
0x43
,
0x54
,
0x45
,
0x5
2
,
0x
10
,
0x3d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x10
,
0x3e
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x
48
,
0x49
,
0x47
,
0x48
,
0x4c
,
0x49
,
0x47
,
0x48
,
0x54
,
0x10
,
0x3f
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x5
3
,
0x
55
,
0x42
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x40
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x53
,
0x55
,
0x
50
,
0x45
,
0x52
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x41
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x52
,
0x45
,
0x4
6
,
0x45
,
0x52
,
0x45
,
0x4e
,
0x43
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x
54
,
0x10
,
0x42
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x53
,
0x50
,
0x4f
,
0x49
,
0x4c
,
0x45
,
0x52
,
0x10
,
0x43
,
0x
12
,
0x10
,
0x0a
,
0x0c
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x5f
,
0x45
,
0x4c
,
0x45
,
0x4d
,
0x45
,
0x4e
,
0x54
,
0x
10
,
0x44
,
0x32
,
0xc7
,
0x04
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x5
3
,
0x65
,
0x
72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x7b
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x
61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x22
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x
61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x
64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x23
,
0x2e
,
0x6d
,
0x65
,
0x
6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x
4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x
22
,
0x21
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1b
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x16
,
0x2f
,
0x61
,
0x70
,
0x
69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x3a
,
0x70
,
0x6
1
,
0x
72
,
0x73
,
0x65
,
0x12
,
0x97
,
0x01
,
0x0a
,
0x14
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x
61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x12
,
0x29
,
0x2e
,
0x6d
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2
b
,
0x0a
,
0x0f
,
0x53
,
0x75
,
0x70
,
0x65
,
0x
72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x
6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6
e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x54
,
0x0a
,
0x15
,
0x52
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x
63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x
0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x
01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x6
1
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x
01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x27
,
0x0a
,
0x0b
,
0x53
,
0x
70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x
6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x7
4
,
0x65
,
0x6e
,
0x74
,
0x22
,
0xba
,
0x01
,
0x0a
,
0x0f
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x
6d
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x74
,
0x61
,
0x67
,
0x5f
,
0x
6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x74
,
0x61
,
0x67
,
0x4e
,
0x
61
,
0x6d
,
0x65
,
0x12
,
0x4d
,
0x0a
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x
73
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x2d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x
61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x
6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x
73
,
0x45
,
0x6e
,
0x74
,
0x72
,
0x79
,
0x52
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x
65
,
0x73
,
0x1a
,
0x3d
,
0x0a
,
0x0f
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x
45
,
0x6e
,
0x74
,
0x72
,
0x79
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x6b
,
0x65
,
0x79
,
0x18
,
0x01
,
0x20
,
0x01
,
0x
28
,
0x09
,
0x52
,
0x03
,
0x6b
,
0x65
,
0x79
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x
18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x3a
,
0x02
,
0x38
,
0x
01
,
0x2a
,
0x83
,
0x04
,
0x0a
,
0x08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x
0a
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x
45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x
41
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x4
8
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x
4b
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x
12
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x
55
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x
4f
,
0x54
,
0x45
,
0x10
,
0x06
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x
15
,
0x0a
,
0x11
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x5f
,
0x
49
,
0x54
,
0x45
,
0x4d
,
0x10
,
0x08
,
0x12
,
0x17
,
0x0a
,
0x13
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x
52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x5f
,
0x49
,
0x54
,
0x45
,
0x4d
,
0x10
,
0x09
,
0x1
2
,
0x
12
,
0x0a
,
0x0e
,
0x54
,
0x41
,
0x53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x5f
,
0x49
,
0x54
,
0x45
,
0x
4d
,
0x10
,
0x0a
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4
b
,
0x10
,
0x0b
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x54
,
0x41
,
0x42
,
0x4c
,
0x45
,
0x10
,
0x0c
,
0x12
,
0x14
,
0x
0a
,
0x10
,
0x45
,
0x4d
,
0x42
,
0x45
,
0x44
,
0x44
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x
4e
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x58
,
0x54
,
0x10
,
0x33
,
0x12
,
0x08
,
0x0a
,
0x0
4
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x10
,
0x34
,
0x12
,
0x0a
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x4
9
,
0x43
,
0x10
,
0x35
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x5f
,
0x49
,
0x54
,
0x41
,
0x
4c
,
0x49
,
0x43
,
0x10
,
0x36
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x10
,
0x37
,
0x12
,
0x
09
,
0x0a
,
0x05
,
0x49
,
0x4d
,
0x41
,
0x47
,
0x45
,
0x10
,
0x38
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x
4e
,
0x4b
,
0x10
,
0x39
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x41
,
0x55
,
0x54
,
0x4f
,
0x5f
,
0x4c
,
0x49
,
0x4e
,
0x
4b
,
0x10
,
0x3a
,
0x12
,
0x07
,
0x0a
,
0x03
,
0x54
,
0x41
,
0x47
,
0x10
,
0x3b
,
0x12
,
0x11
,
0x0a
,
0x0
d
,
0x
53
,
0x54
,
0x52
,
0x49
,
0x4b
,
0x45
,
0x54
,
0x48
,
0x52
,
0x4f
,
0x55
,
0x47
,
0x48
,
0x10
,
0x3c
,
0x12
,
0x
16
,
0x0a
,
0x12
,
0x45
,
0x53
,
0x43
,
0x41
,
0x50
,
0x49
,
0x4e
,
0x47
,
0x5f
,
0x43
,
0x48
,
0x41
,
0x52
,
0x
41
,
0x43
,
0x54
,
0x45
,
0x52
,
0x10
,
0x3d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x10
,
0x
3e
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x48
,
0x49
,
0x47
,
0x48
,
0x4c
,
0x49
,
0x47
,
0x48
,
0x54
,
0x10
,
0x3f
,
0x
12
,
0x0d
,
0x0a
,
0x09
,
0x53
,
0x55
,
0x42
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x40
,
0x1
2
,
0x
0f
,
0x0a
,
0x0b
,
0x53
,
0x55
,
0x50
,
0x45
,
0x52
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x41
,
0x
12
,
0x16
,
0x0a
,
0x12
,
0x52
,
0x45
,
0x46
,
0x45
,
0x52
,
0x45
,
0x4e
,
0x43
,
0x45
,
0x44
,
0x5f
,
0x4
3
,
0x
4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x42
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x53
,
0x50
,
0x4f
,
0x49
,
0x
4c
,
0x45
,
0x52
,
0x10
,
0x43
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x5f
,
0x45
,
0x4c
,
0x45
,
0x4
d
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x44
,
0x32
,
0xc7
,
0x04
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x
64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x7b
,
0x0a
,
0x0d
,
0x50
,
0x
61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x22
,
0x2e
,
0x6d
,
0x
65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x7
3
,
0x65
,
0x
4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x
1a
,
0x23
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x
50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x
70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x21
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1b
,
0x3a
,
0x01
,
0x2a
,
0x
22
,
0x16
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x
77
,
0x6e
,
0x3a
,
0x70
,
0x61
,
0x72
,
0x73
,
0x65
,
0x12
,
0x97
,
0x01
,
0x0a
,
0x14
,
0x52
,
0x65
,
0x73
,
0x
74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x
73
,
0x12
,
0x29
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x3
1
,
0x
2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x
4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x2a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x2a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x28
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x22
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x1d
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x3a
,
0x72
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x12
,
0x9f
,
0x01
,
0x0a
,
0x16
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x12
,
0x2b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x2c
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x2a
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x24
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x1f
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x3a
,
0x73
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x12
,
0x7b
,
0x0a
,
0x0f
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x1a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x22
,
0x26
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x20
,
0x12
,
0x1e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6c
,
0x69
,
0x6e
,
0x6b
,
0x3a
,
0x6d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x2f
,
0x67
,
0x65
,
0x6e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x31
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x31
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x28
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x22
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x1d
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x3a
,
0x72
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x12
,
0x9f
,
0x01
,
0x0a
,
0x16
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x12
,
0x2b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x2c
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x2a
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x24
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x1f
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x3a
,
0x73
,
0x74
,
0x72
,
0x69
,
0x6e
,
0x67
,
0x69
,
0x66
,
0x79
,
0x12
,
0x7b
,
0x0a
,
0x0f
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x1a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x22
,
0x26
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x20
,
0x12
,
0x1e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6c
,
0x69
,
0x6e
,
0x6b
,
0x3a
,
0x6d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x2f
,
0x67
,
0x65
,
0x6e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x31
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x31
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
var
(
...
...
@@ -3117,114 +3194,116 @@ func file_api_v1_markdown_service_proto_rawDescGZIP() []byte {
return
file_api_v1_markdown_service_proto_rawDescData
}
var
file_api_v1_markdown_service_proto_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
1
)
var
file_api_v1_markdown_service_proto_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
2
)
var
file_api_v1_markdown_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
42
)
var
file_api_v1_markdown_service_proto_goTypes
=
[]
any
{
(
NodeType
)(
0
),
// 0: memos.api.v1.NodeType
(
*
ParseMarkdownRequest
)(
nil
),
// 1: memos.api.v1.ParseMarkdownRequest
(
*
ParseMarkdownResponse
)(
nil
),
// 2: memos.api.v1.ParseMarkdownResponse
(
*
RestoreMarkdownNodesRequest
)(
nil
),
// 3: memos.api.v1.RestoreMarkdownNodesRequest
(
*
RestoreMarkdownNodesResponse
)(
nil
),
// 4: memos.api.v1.RestoreMarkdownNodesResponse
(
*
StringifyMarkdownNodesRequest
)(
nil
),
// 5: memos.api.v1.StringifyMarkdownNodesRequest
(
*
StringifyMarkdownNodesResponse
)(
nil
),
// 6: memos.api.v1.StringifyMarkdownNodesResponse
(
*
GetLinkMetadataRequest
)(
nil
),
// 7: memos.api.v1.GetLinkMetadataRequest
(
*
LinkMetadata
)(
nil
),
// 8: memos.api.v1.LinkMetadata
(
*
Node
)(
nil
),
// 9: memos.api.v1.Node
(
*
LineBreakNode
)(
nil
),
// 10: memos.api.v1.LineBreakNode
(
*
ParagraphNode
)(
nil
),
// 11: memos.api.v1.ParagraphNode
(
*
CodeBlockNode
)(
nil
),
// 12: memos.api.v1.CodeBlockNode
(
*
HeadingNode
)(
nil
),
// 13: memos.api.v1.HeadingNode
(
*
HorizontalRuleNode
)(
nil
),
// 14: memos.api.v1.HorizontalRuleNode
(
*
BlockquoteNode
)(
nil
),
// 15: memos.api.v1.BlockquoteNode
(
*
ListNode
)(
nil
),
// 16: memos.api.v1.ListNode
(
*
OrderedListItemNode
)(
nil
),
// 17: memos.api.v1.OrderedListItemNode
(
*
UnorderedListItemNode
)(
nil
),
// 18: memos.api.v1.UnorderedListItemNode
(
*
TaskListItemNode
)(
nil
),
// 19: memos.api.v1.TaskListItemNode
(
*
MathBlockNode
)(
nil
),
// 20: memos.api.v1.MathBlockNode
(
*
TableNode
)(
nil
),
// 21: memos.api.v1.TableNode
(
*
EmbeddedContentNode
)(
nil
),
// 22: memos.api.v1.EmbeddedContentNode
(
*
TextNode
)(
nil
),
// 23: memos.api.v1.TextNode
(
*
BoldNode
)(
nil
),
// 24: memos.api.v1.BoldNode
(
*
ItalicNode
)(
nil
),
// 25: memos.api.v1.ItalicNode
(
*
BoldItalicNode
)(
nil
),
// 26: memos.api.v1.BoldItalicNode
(
*
CodeNode
)(
nil
),
// 27: memos.api.v1.CodeNode
(
*
ImageNode
)(
nil
),
// 28: memos.api.v1.ImageNode
(
*
LinkNode
)(
nil
),
// 29: memos.api.v1.LinkNode
(
*
AutoLinkNode
)(
nil
),
// 30: memos.api.v1.AutoLinkNode
(
*
TagNode
)(
nil
),
// 31: memos.api.v1.TagNode
(
*
StrikethroughNode
)(
nil
),
// 32: memos.api.v1.StrikethroughNode
(
*
EscapingCharacterNode
)(
nil
),
// 33: memos.api.v1.EscapingCharacterNode
(
*
MathNode
)(
nil
),
// 34: memos.api.v1.MathNode
(
*
HighlightNode
)(
nil
),
// 35: memos.api.v1.HighlightNode
(
*
SubscriptNode
)(
nil
),
// 36: memos.api.v1.SubscriptNode
(
*
SuperscriptNode
)(
nil
),
// 37: memos.api.v1.SuperscriptNode
(
*
ReferencedContentNode
)(
nil
),
// 38: memos.api.v1.ReferencedContentNode
(
*
SpoilerNode
)(
nil
),
// 39: memos.api.v1.SpoilerNode
(
*
HTMLElementNode
)(
nil
),
// 40: memos.api.v1.HTMLElementNode
(
*
TableNode_Row
)(
nil
),
// 41: memos.api.v1.TableNode.Row
nil
,
// 42: memos.api.v1.HTMLElementNode.AttributesEntry
(
ListNode_Kind
)(
0
),
// 1: memos.api.v1.ListNode.Kind
(
*
ParseMarkdownRequest
)(
nil
),
// 2: memos.api.v1.ParseMarkdownRequest
(
*
ParseMarkdownResponse
)(
nil
),
// 3: memos.api.v1.ParseMarkdownResponse
(
*
RestoreMarkdownNodesRequest
)(
nil
),
// 4: memos.api.v1.RestoreMarkdownNodesRequest
(
*
RestoreMarkdownNodesResponse
)(
nil
),
// 5: memos.api.v1.RestoreMarkdownNodesResponse
(
*
StringifyMarkdownNodesRequest
)(
nil
),
// 6: memos.api.v1.StringifyMarkdownNodesRequest
(
*
StringifyMarkdownNodesResponse
)(
nil
),
// 7: memos.api.v1.StringifyMarkdownNodesResponse
(
*
GetLinkMetadataRequest
)(
nil
),
// 8: memos.api.v1.GetLinkMetadataRequest
(
*
LinkMetadata
)(
nil
),
// 9: memos.api.v1.LinkMetadata
(
*
Node
)(
nil
),
// 10: memos.api.v1.Node
(
*
LineBreakNode
)(
nil
),
// 11: memos.api.v1.LineBreakNode
(
*
ParagraphNode
)(
nil
),
// 12: memos.api.v1.ParagraphNode
(
*
CodeBlockNode
)(
nil
),
// 13: memos.api.v1.CodeBlockNode
(
*
HeadingNode
)(
nil
),
// 14: memos.api.v1.HeadingNode
(
*
HorizontalRuleNode
)(
nil
),
// 15: memos.api.v1.HorizontalRuleNode
(
*
BlockquoteNode
)(
nil
),
// 16: memos.api.v1.BlockquoteNode
(
*
ListNode
)(
nil
),
// 17: memos.api.v1.ListNode
(
*
OrderedListItemNode
)(
nil
),
// 18: memos.api.v1.OrderedListItemNode
(
*
UnorderedListItemNode
)(
nil
),
// 19: memos.api.v1.UnorderedListItemNode
(
*
TaskListItemNode
)(
nil
),
// 20: memos.api.v1.TaskListItemNode
(
*
MathBlockNode
)(
nil
),
// 21: memos.api.v1.MathBlockNode
(
*
TableNode
)(
nil
),
// 22: memos.api.v1.TableNode
(
*
EmbeddedContentNode
)(
nil
),
// 23: memos.api.v1.EmbeddedContentNode
(
*
TextNode
)(
nil
),
// 24: memos.api.v1.TextNode
(
*
BoldNode
)(
nil
),
// 25: memos.api.v1.BoldNode
(
*
ItalicNode
)(
nil
),
// 26: memos.api.v1.ItalicNode
(
*
BoldItalicNode
)(
nil
),
// 27: memos.api.v1.BoldItalicNode
(
*
CodeNode
)(
nil
),
// 28: memos.api.v1.CodeNode
(
*
ImageNode
)(
nil
),
// 29: memos.api.v1.ImageNode
(
*
LinkNode
)(
nil
),
// 30: memos.api.v1.LinkNode
(
*
AutoLinkNode
)(
nil
),
// 31: memos.api.v1.AutoLinkNode
(
*
TagNode
)(
nil
),
// 32: memos.api.v1.TagNode
(
*
StrikethroughNode
)(
nil
),
// 33: memos.api.v1.StrikethroughNode
(
*
EscapingCharacterNode
)(
nil
),
// 34: memos.api.v1.EscapingCharacterNode
(
*
MathNode
)(
nil
),
// 35: memos.api.v1.MathNode
(
*
HighlightNode
)(
nil
),
// 36: memos.api.v1.HighlightNode
(
*
SubscriptNode
)(
nil
),
// 37: memos.api.v1.SubscriptNode
(
*
SuperscriptNode
)(
nil
),
// 38: memos.api.v1.SuperscriptNode
(
*
ReferencedContentNode
)(
nil
),
// 39: memos.api.v1.ReferencedContentNode
(
*
SpoilerNode
)(
nil
),
// 40: memos.api.v1.SpoilerNode
(
*
HTMLElementNode
)(
nil
),
// 41: memos.api.v1.HTMLElementNode
(
*
TableNode_Row
)(
nil
),
// 42: memos.api.v1.TableNode.Row
nil
,
// 43: memos.api.v1.HTMLElementNode.AttributesEntry
}
var
file_api_v1_markdown_service_proto_depIdxs
=
[]
int32
{
9
,
// 0: memos.api.v1.ParseMarkdownResponse.nodes:type_name -> memos.api.v1.Node
9
,
// 1: memos.api.v1.RestoreMarkdownNodesRequest.nodes:type_name -> memos.api.v1.Node
9
,
// 2: memos.api.v1.StringifyMarkdownNodesRequest.nodes:type_name -> memos.api.v1.Node
10
,
// 0: memos.api.v1.ParseMarkdownResponse.nodes:type_name -> memos.api.v1.Node
10
,
// 1: memos.api.v1.RestoreMarkdownNodesRequest.nodes:type_name -> memos.api.v1.Node
10
,
// 2: memos.api.v1.StringifyMarkdownNodesRequest.nodes:type_name -> memos.api.v1.Node
0
,
// 3: memos.api.v1.Node.type:type_name -> memos.api.v1.NodeType
10
,
// 4: memos.api.v1.Node.line_break_node:type_name -> memos.api.v1.LineBreakNode
11
,
// 5: memos.api.v1.Node.paragraph_node:type_name -> memos.api.v1.ParagraphNode
12
,
// 6: memos.api.v1.Node.code_block_node:type_name -> memos.api.v1.CodeBlockNode
13
,
// 7: memos.api.v1.Node.heading_node:type_name -> memos.api.v1.HeadingNode
14
,
// 8: memos.api.v1.Node.horizontal_rule_node:type_name -> memos.api.v1.HorizontalRuleNode
15
,
// 9: memos.api.v1.Node.blockquote_node:type_name -> memos.api.v1.BlockquoteNode
16
,
// 10: memos.api.v1.Node.list_node:type_name -> memos.api.v1.ListNode
17
,
// 11: memos.api.v1.Node.ordered_list_item_node:type_name -> memos.api.v1.OrderedListItemNode
18
,
// 12: memos.api.v1.Node.unordered_list_item_node:type_name -> memos.api.v1.UnorderedListItemNode
19
,
// 13: memos.api.v1.Node.task_list_item_node:type_name -> memos.api.v1.TaskListItemNode
20
,
// 14: memos.api.v1.Node.math_block_node:type_name -> memos.api.v1.MathBlockNode
21
,
// 15: memos.api.v1.Node.table_node:type_name -> memos.api.v1.TableNode
22
,
// 16: memos.api.v1.Node.embedded_content_node:type_name -> memos.api.v1.EmbeddedContentNode
23
,
// 17: memos.api.v1.Node.text_node:type_name -> memos.api.v1.TextNode
24
,
// 18: memos.api.v1.Node.bold_node:type_name -> memos.api.v1.BoldNode
25
,
// 19: memos.api.v1.Node.italic_node:type_name -> memos.api.v1.ItalicNode
26
,
// 20: memos.api.v1.Node.bold_italic_node:type_name -> memos.api.v1.BoldItalicNode
27
,
// 21: memos.api.v1.Node.code_node:type_name -> memos.api.v1.CodeNode
28
,
// 22: memos.api.v1.Node.image_node:type_name -> memos.api.v1.ImageNode
29
,
// 23: memos.api.v1.Node.link_node:type_name -> memos.api.v1.LinkNode
30
,
// 24: memos.api.v1.Node.auto_link_node:type_name -> memos.api.v1.AutoLinkNode
31
,
// 25: memos.api.v1.Node.tag_node:type_name -> memos.api.v1.TagNode
32
,
// 26: memos.api.v1.Node.strikethrough_node:type_name -> memos.api.v1.StrikethroughNode
33
,
// 27: memos.api.v1.Node.escaping_character_node:type_name -> memos.api.v1.EscapingCharacterNode
34
,
// 28: memos.api.v1.Node.math_node:type_name -> memos.api.v1.MathNode
35
,
// 29: memos.api.v1.Node.highlight_node:type_name -> memos.api.v1.HighlightNode
36
,
// 30: memos.api.v1.Node.subscript_node:type_name -> memos.api.v1.SubscriptNode
37
,
// 31: memos.api.v1.Node.superscript_node:type_name -> memos.api.v1.SuperscriptNode
38
,
// 32: memos.api.v1.Node.referenced_content_node:type_name -> memos.api.v1.ReferencedContentNode
39
,
// 33: memos.api.v1.Node.spoiler_node:type_name -> memos.api.v1.SpoilerNode
40
,
// 34: memos.api.v1.Node.html_element_node:type_name -> memos.api.v1.HTMLElementNode
9
,
// 35: memos.api.v1.ParagraphNode.children:type_name -> memos.api.v1.Node
9
,
// 36: memos.api.v1.HeadingNode.children:type_name -> memos.api.v1.Node
9
,
// 37: memos.api.v1.BlockquoteNode.children:type_name -> memos.api.v1.Node
9
,
// 38: memos.api.v1.ListNode.children:type_name -> memos.api.v1.Node
9
,
// 39: memos.api.v1.OrderedListItemNode.children:type_name -> memos.api.v1.Node
9
,
// 40: memos.api.v1.UnorderedListItemNode.children:type_name -> memos.api.v1.Node
9
,
// 41: memos.api.v1.TaskListItemNode.children:type_name -> memos.api.v1.Node
9
,
// 42: memos.api.v1.TableNode.header:type_name -> memos.api.v1.Node
41
,
// 43: memos.api.v1.TableNode.rows:type_name -> memos.api.v1.TableNode.Row
9
,
// 44: memos.api.v1.BoldNode.children:type_name -> memos.api.v1.Node
42
,
// 45: memos.api.v1.HTMLElementNode.attributes:type_name -> memos.api.v1.HTMLElementNode.AttributesEntry
9
,
// 46: memos.api.v1.TableNode.Row.cells:type_name -> memos.api.v1.Node
1
,
// 47: memos.api.v1.MarkdownService.ParseMarkdown:input_type -> memos.api.v1.ParseMarkdownRequest
3
,
// 48: memos.api.v1.MarkdownService.RestoreMarkdownNodes:input_type -> memos.api.v1.RestoreMarkdownNodesRequest
5
,
// 49: memos.api.v1.MarkdownService.StringifyMarkdownNodes:input_type -> memos.api.v1.StringifyMarkdownNodesRequest
7
,
// 50: memos.api.v1.MarkdownService.GetLinkMetadata:input_type -> memos.api.v1.GetLinkMetadataRequest
2
,
// 51: memos.api.v1.MarkdownService.ParseMarkdown:output_type -> memos.api.v1.ParseMarkdownResponse
4
,
// 52: memos.api.v1.MarkdownService.RestoreMarkdownNodes:output_type -> memos.api.v1.RestoreMarkdownNodesResponse
6
,
// 53: memos.api.v1.MarkdownService.StringifyMarkdownNodes:output_type -> memos.api.v1.StringifyMarkdownNodesResponse
8
,
// 54: memos.api.v1.MarkdownService.GetLinkMetadata:output_type -> memos.api.v1.LinkMetadata
51
,
// [51:55] is the sub-list for method output_type
47
,
// [47:51] is the sub-list for method input_type
47
,
// [47:47] is the sub-list for extension type_name
47
,
// [47:47] is the sub-list for extension extendee
0
,
// [0:47] is the sub-list for field type_name
11
,
// 4: memos.api.v1.Node.line_break_node:type_name -> memos.api.v1.LineBreakNode
12
,
// 5: memos.api.v1.Node.paragraph_node:type_name -> memos.api.v1.ParagraphNode
13
,
// 6: memos.api.v1.Node.code_block_node:type_name -> memos.api.v1.CodeBlockNode
14
,
// 7: memos.api.v1.Node.heading_node:type_name -> memos.api.v1.HeadingNode
15
,
// 8: memos.api.v1.Node.horizontal_rule_node:type_name -> memos.api.v1.HorizontalRuleNode
16
,
// 9: memos.api.v1.Node.blockquote_node:type_name -> memos.api.v1.BlockquoteNode
17
,
// 10: memos.api.v1.Node.list_node:type_name -> memos.api.v1.ListNode
18
,
// 11: memos.api.v1.Node.ordered_list_item_node:type_name -> memos.api.v1.OrderedListItemNode
19
,
// 12: memos.api.v1.Node.unordered_list_item_node:type_name -> memos.api.v1.UnorderedListItemNode
20
,
// 13: memos.api.v1.Node.task_list_item_node:type_name -> memos.api.v1.TaskListItemNode
21
,
// 14: memos.api.v1.Node.math_block_node:type_name -> memos.api.v1.MathBlockNode
22
,
// 15: memos.api.v1.Node.table_node:type_name -> memos.api.v1.TableNode
23
,
// 16: memos.api.v1.Node.embedded_content_node:type_name -> memos.api.v1.EmbeddedContentNode
24
,
// 17: memos.api.v1.Node.text_node:type_name -> memos.api.v1.TextNode
25
,
// 18: memos.api.v1.Node.bold_node:type_name -> memos.api.v1.BoldNode
26
,
// 19: memos.api.v1.Node.italic_node:type_name -> memos.api.v1.ItalicNode
27
,
// 20: memos.api.v1.Node.bold_italic_node:type_name -> memos.api.v1.BoldItalicNode
28
,
// 21: memos.api.v1.Node.code_node:type_name -> memos.api.v1.CodeNode
29
,
// 22: memos.api.v1.Node.image_node:type_name -> memos.api.v1.ImageNode
30
,
// 23: memos.api.v1.Node.link_node:type_name -> memos.api.v1.LinkNode
31
,
// 24: memos.api.v1.Node.auto_link_node:type_name -> memos.api.v1.AutoLinkNode
32
,
// 25: memos.api.v1.Node.tag_node:type_name -> memos.api.v1.TagNode
33
,
// 26: memos.api.v1.Node.strikethrough_node:type_name -> memos.api.v1.StrikethroughNode
34
,
// 27: memos.api.v1.Node.escaping_character_node:type_name -> memos.api.v1.EscapingCharacterNode
35
,
// 28: memos.api.v1.Node.math_node:type_name -> memos.api.v1.MathNode
36
,
// 29: memos.api.v1.Node.highlight_node:type_name -> memos.api.v1.HighlightNode
37
,
// 30: memos.api.v1.Node.subscript_node:type_name -> memos.api.v1.SubscriptNode
38
,
// 31: memos.api.v1.Node.superscript_node:type_name -> memos.api.v1.SuperscriptNode
39
,
// 32: memos.api.v1.Node.referenced_content_node:type_name -> memos.api.v1.ReferencedContentNode
40
,
// 33: memos.api.v1.Node.spoiler_node:type_name -> memos.api.v1.SpoilerNode
41
,
// 34: memos.api.v1.Node.html_element_node:type_name -> memos.api.v1.HTMLElementNode
10
,
// 35: memos.api.v1.ParagraphNode.children:type_name -> memos.api.v1.Node
10
,
// 36: memos.api.v1.HeadingNode.children:type_name -> memos.api.v1.Node
10
,
// 37: memos.api.v1.BlockquoteNode.children:type_name -> memos.api.v1.Node
1
,
// 38: memos.api.v1.ListNode.kind:type_name -> memos.api.v1.ListNode.Kind
10
,
// 39: memos.api.v1.ListNode.children:type_name -> memos.api.v1.Node
10
,
// 40: memos.api.v1.OrderedListItemNode.children:type_name -> memos.api.v1.Node
10
,
// 41: memos.api.v1.UnorderedListItemNode.children:type_name -> memos.api.v1.Node
10
,
// 42: memos.api.v1.TaskListItemNode.children:type_name -> memos.api.v1.Node
10
,
// 43: memos.api.v1.TableNode.header:type_name -> memos.api.v1.Node
42
,
// 44: memos.api.v1.TableNode.rows:type_name -> memos.api.v1.TableNode.Row
10
,
// 45: memos.api.v1.BoldNode.children:type_name -> memos.api.v1.Node
43
,
// 46: memos.api.v1.HTMLElementNode.attributes:type_name -> memos.api.v1.HTMLElementNode.AttributesEntry
10
,
// 47: memos.api.v1.TableNode.Row.cells:type_name -> memos.api.v1.Node
2
,
// 48: memos.api.v1.MarkdownService.ParseMarkdown:input_type -> memos.api.v1.ParseMarkdownRequest
4
,
// 49: memos.api.v1.MarkdownService.RestoreMarkdownNodes:input_type -> memos.api.v1.RestoreMarkdownNodesRequest
6
,
// 50: memos.api.v1.MarkdownService.StringifyMarkdownNodes:input_type -> memos.api.v1.StringifyMarkdownNodesRequest
8
,
// 51: memos.api.v1.MarkdownService.GetLinkMetadata:input_type -> memos.api.v1.GetLinkMetadataRequest
3
,
// 52: memos.api.v1.MarkdownService.ParseMarkdown:output_type -> memos.api.v1.ParseMarkdownResponse
5
,
// 53: memos.api.v1.MarkdownService.RestoreMarkdownNodes:output_type -> memos.api.v1.RestoreMarkdownNodesResponse
7
,
// 54: memos.api.v1.MarkdownService.StringifyMarkdownNodes:output_type -> memos.api.v1.StringifyMarkdownNodesResponse
9
,
// 55: memos.api.v1.MarkdownService.GetLinkMetadata:output_type -> memos.api.v1.LinkMetadata
52
,
// [52:56] is the sub-list for method output_type
48
,
// [48:52] is the sub-list for method input_type
48
,
// [48:48] is the sub-list for extension type_name
48
,
// [48:48] is the sub-list for extension extendee
0
,
// [0:48] is the sub-list for field type_name
}
func
init
()
{
file_api_v1_markdown_service_proto_init
()
}
...
...
@@ -3764,7 +3843,7 @@ func file_api_v1_markdown_service_proto_init() {
File
:
protoimpl
.
DescBuilder
{
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
RawDescriptor
:
file_api_v1_markdown_service_proto_rawDesc
,
NumEnums
:
1
,
NumEnums
:
2
,
NumMessages
:
42
,
NumExtensions
:
0
,
NumServices
:
1
,
...
...
server/router/api/v1/markdown_service.go
View file @
ca213437
...
...
@@ -77,7 +77,7 @@ func convertFromASTNode(rawNode ast.Node) *v1pb.Node {
node
.
Node
=
&
v1pb
.
Node_BlockquoteNode
{
BlockquoteNode
:
&
v1pb
.
BlockquoteNode
{
Children
:
children
}}
case
*
ast
.
List
:
children
:=
convertFromASTNodes
(
n
.
Children
)
node
.
Node
=
&
v1pb
.
Node_ListNode
{
ListNode
:
&
v1pb
.
ListNode
{
Children
:
children
}}
node
.
Node
=
&
v1pb
.
Node_ListNode
{
ListNode
:
&
v1pb
.
ListNode
{
Kind
:
convertListKindFromASTNode
(
n
.
Kind
),
Indent
:
int32
(
n
.
Indent
),
Children
:
children
}}
case
*
ast
.
OrderedListItem
:
children
:=
convertFromASTNodes
(
n
.
Children
)
node
.
Node
=
&
v1pb
.
Node_OrderedListItemNode
{
OrderedListItemNode
:
&
v1pb
.
OrderedListItemNode
{
Number
:
n
.
Number
,
Indent
:
int32
(
n
.
Indent
),
Children
:
children
}}
...
...
@@ -156,6 +156,19 @@ func convertTableFromASTNode(node *ast.Table) *v1pb.TableNode {
return
table
}
func
convertListKindFromASTNode
(
node
ast
.
ListKind
)
v1pb
.
ListNode_Kind
{
switch
node
{
case
ast
.
OrderedList
:
return
v1pb
.
ListNode_ORDERED
case
ast
.
UnorderedList
:
return
v1pb
.
ListNode_UNORDERED
case
ast
.
DescrpitionList
:
return
v1pb
.
ListNode_DESCRIPTION
default
:
return
v1pb
.
ListNode_KIND_UNSPECIFIED
}
}
func
convertToASTNode
(
node
*
v1pb
.
Node
)
ast
.
Node
{
switch
n
:=
node
.
Node
.
(
type
)
{
case
*
v1pb
.
Node_LineBreakNode
:
...
...
@@ -175,7 +188,7 @@ func convertToASTNode(node *v1pb.Node) ast.Node {
return
&
ast
.
Blockquote
{
Children
:
children
}
case
*
v1pb
.
Node_ListNode
:
children
:=
convertToASTNodes
(
n
.
ListNode
.
Children
)
return
&
ast
.
List
{
Children
:
children
}
return
&
ast
.
List
{
Kind
:
convertListKindToASTNode
(
n
.
ListNode
.
Kind
),
Indent
:
int
(
n
.
ListNode
.
Indent
),
Children
:
children
}
case
*
v1pb
.
Node_OrderedListItemNode
:
children
:=
convertToASTNodes
(
n
.
OrderedListItemNode
.
Children
)
return
&
ast
.
OrderedListItem
{
Number
:
n
.
OrderedListItemNode
.
Number
,
Indent
:
int
(
n
.
OrderedListItemNode
.
Indent
),
Children
:
children
}
...
...
@@ -252,3 +265,17 @@ func convertTableToASTNode(node *v1pb.TableNode) *ast.Table {
}
return
table
}
func
convertListKindToASTNode
(
kind
v1pb
.
ListNode_Kind
)
ast
.
ListKind
{
switch
kind
{
case
v1pb
.
ListNode_ORDERED
:
return
ast
.
OrderedList
case
v1pb
.
ListNode_UNORDERED
:
return
ast
.
UnorderedList
case
v1pb
.
ListNode_DESCRIPTION
:
return
ast
.
DescrpitionList
default
:
// Default to description list.
return
ast
.
DescrpitionList
}
}
web/src/components/MemoContent/List.tsx
View file @
ca213437
import
{
Node
,
NodeType
}
from
"@/types/proto/api/v1/markdown_service"
;
import
clsx
from
"clsx"
;
import
React
from
"react"
;
import
{
ListNode_Kind
,
Node
,
NodeType
}
from
"@/types/proto/api/v1/markdown_service"
;
import
Renderer
from
"./Renderer"
;
interface
Props
{
index
:
string
;
kind
:
ListNode_Kind
;
indent
:
number
;
children
:
Node
[];
}
const
List
:
React
.
FC
<
Props
>
=
({
children
}:
Props
)
=>
{
const
List
:
React
.
FC
<
Props
>
=
({
kind
,
indent
,
children
}:
Props
)
=>
{
let
prevNode
:
Node
|
null
=
null
;
let
skipNextLineBreakFlag
=
false
;
return
(
<
dl
>
{
children
.
map
((
child
,
index
)
=>
{
if
(
prevNode
?.
type
!==
NodeType
.
LINE_BREAK
&&
child
.
type
===
NodeType
.
LINE_BREAK
&&
skipNextLineBreakFlag
)
{
skipNextLineBreakFlag
=
false
;
return
null
;
}
const
getListContainer
=
(
kind
:
ListNode_Kind
)
=>
{
switch
(
kind
)
{
case
ListNode_Kind
.
ORDERED
:
return
"ol"
;
case
ListNode_Kind
.
UNORDERED
:
return
"ul"
;
case
ListNode_Kind
.
DESCRIPTION
:
return
"dl"
;
default
:
return
"div"
;
}
};
prevNode
=
child
;
skipNextLineBreakFlag
=
true
;
return
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>;
})
}
</
dl
>
return
React
.
createElement
(
getListContainer
(
kind
),
{
className
:
clsx
(
`list-inside
${
kind
===
ListNode_Kind
.
ORDERED
?
"list-decimal"
:
kind
===
ListNode_Kind
.
UNORDERED
?
"list-disc"
:
"list-none"
}
`
,
indent
>
0
?
`pl-
${
2
*
indent
}
`
:
""
,
),
},
children
.
map
((
child
,
index
)
=>
{
if
(
prevNode
?.
type
!==
NodeType
.
LINE_BREAK
&&
child
.
type
===
NodeType
.
LINE_BREAK
&&
skipNextLineBreakFlag
)
{
skipNextLineBreakFlag
=
false
;
return
null
;
}
prevNode
=
child
;
skipNextLineBreakFlag
=
true
;
return
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>;
}),
);
};
...
...
web/src/components/MemoContent/OrderedListItem.tsx
View file @
ca213437
import
{
repeat
}
from
"lodash-es"
;
import
{
Node
}
from
"@/types/proto/api/v1/markdown_service"
;
import
Renderer
from
"./Renderer"
;
import
{
BaseProps
}
from
"./types"
;
...
...
@@ -9,24 +8,12 @@ interface Props extends BaseProps {
children
:
Node
[];
}
const
OrderedListItem
:
React
.
FC
<
Props
>
=
({
number
,
indent
,
children
}:
Props
)
=>
{
const
OrderedListItem
:
React
.
FC
<
Props
>
=
({
children
}:
Props
)
=>
{
return
(
<
li
className=
"w-full flex flex-row"
>
{
indent
>
0
&&
(
<
div
className=
"block font-mono shrink-0"
>
<
span
>
{
repeat
(
" "
,
indent
)
}
</
span
>
</
div
>
)
}
<
div
className=
"w-auto grid grid-cols-[24px_1fr] gap-1"
>
<
div
className=
"w-7 h-6 flex justify-center items-center"
>
<
span
className=
"opacity-80"
>
{
number
}
.
</
span
>
</
div
>
<
div
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
div
>
</
div
>
<
li
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
li
>
);
};
...
...
web/src/components/MemoContent/TaskListItem.tsx
View file @
ca213437
import
{
Checkbox
}
from
"@mui/joy"
;
import
clsx
from
"clsx"
;
import
{
repeat
}
from
"lodash-es"
;
import
{
useContext
,
useState
}
from
"react"
;
import
{
markdownServiceClient
}
from
"@/grpcweb"
;
import
{
useMemoStore
}
from
"@/store/v1"
;
...
...
@@ -17,7 +16,7 @@ interface Props {
children
:
Node
[];
}
const
TaskListItem
:
React
.
FC
<
Props
>
=
({
node
,
indent
,
complete
,
children
}:
Props
)
=>
{
const
TaskListItem
:
React
.
FC
<
Props
>
=
({
node
,
complete
,
children
}:
Props
)
=>
{
const
context
=
useContext
(
RendererContext
);
const
memoStore
=
useMemoStore
();
const
[
checked
]
=
useState
(
complete
);
...
...
@@ -39,22 +38,15 @@ const TaskListItem: React.FC<Props> = ({ node, indent, complete, children }: Pro
};
return
(
<
li
className=
"w-full flex flex-row"
>
{
indent
>
0
&&
(
<
div
className=
"block font-mono shrink-0"
>
<
span
>
{
repeat
(
" "
,
indent
)
}
</
span
>
</
div
>
)
}
<
div
className=
"w-auto grid grid-cols-[24px_1fr] gap-1"
>
<
div
className=
"w-7 h-6 flex justify-center items-center"
>
<
Checkbox
size=
"sm"
checked=
{
checked
}
disabled=
{
context
.
readonly
}
onChange=
{
(
e
)
=>
handleCheckboxChange
(
e
.
target
.
checked
)
}
/>
</
div
>
<
div
className=
{
clsx
(
complete
&&
"line-through opacity-80"
)
}
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
div
>
</
div
>
<
li
className=
{
clsx
(
"w-full grid grid-cols-[24px_1fr]"
)
}
>
<
span
className=
"w-6 h-6 flex justify-start items-center"
>
<
Checkbox
size=
"sm"
checked=
{
checked
}
disabled=
{
context
.
readonly
}
onChange=
{
(
e
)
=>
handleCheckboxChange
(
e
.
target
.
checked
)
}
/>
</
span
>
<
p
className=
{
clsx
(
complete
&&
"line-through opacity-80"
)
}
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
p
>
</
li
>
);
};
...
...
web/src/components/MemoContent/UnorderedListItem.tsx
View file @
ca213437
import
{
repeat
}
from
"lodash-es"
;
import
{
Node
}
from
"@/types/proto/api/v1/markdown_service"
;
import
Renderer
from
"./Renderer"
;
...
...
@@ -8,24 +7,12 @@ interface Props {
children
:
Node
[];
}
const
UnorderedListItem
:
React
.
FC
<
Props
>
=
({
indent
,
children
}:
Props
)
=>
{
const
UnorderedListItem
:
React
.
FC
<
Props
>
=
({
children
}:
Props
)
=>
{
return
(
<
li
className=
"w-full flex flex-row"
>
{
indent
>
0
&&
(
<
div
className=
"block font-mono shrink-0"
>
<
span
>
{
repeat
(
" "
,
indent
)
}
</
span
>
</
div
>
)
}
<
div
className=
"w-auto grid grid-cols-[24px_1fr] gap-1"
>
<
div
className=
"w-7 h-6 flex justify-center items-center"
>
<
span
className=
"opacity-80"
>
•
</
span
>
</
div
>
<
div
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
div
>
</
div
>
<
li
>
{
children
.
map
((
child
,
index
)
=>
(
<
Renderer
key=
{
`${child.type}-${index}`
}
index=
{
String
(
index
)
}
node=
{
child
}
/>
))
}
</
li
>
);
};
...
...
web/src/components/MemoEditor/index.tsx
View file @
ca213437
...
...
@@ -443,7 +443,7 @@ const MemoEditor = (props: Props) => {
<
AddMemoRelationPopover
editorRef=
{
editorRef
}
/>
</
div
>
</
div
>
<
Divider
className=
"!mt-2"
/>
<
Divider
className=
"!mt-2
opacity-40
"
/>
<
div
className=
"w-full flex flex-row justify-between items-center py-3 dark:border-t-zinc-500"
>
<
div
className=
"relative flex flex-row justify-start items-center"
onFocus=
{
(
e
)
=>
e
.
stopPropagation
()
}
>
<
Select
...
...
web/src/components/UserBanner.tsx
View file @
ca213437
...
...
@@ -23,8 +23,8 @@ const UserBanner = (props: Props) => {
const
workspaceSettingStore
=
useWorkspaceSettingStore
();
const
workspaceGeneralSetting
=
workspaceSettingStore
.
getWorkspaceSettingByKey
(
WorkspaceSettingKey
.
GENERAL
).
generalSetting
||
WorkspaceGeneralSetting
.
fromPartial
({});
const
title
=
user
?
user
.
nickname
||
user
.
username
:
workspaceGeneralSetting
.
customProfile
?.
title
;
const
avatarUrl
=
user
?
user
.
avatarUrl
:
workspaceGeneralSetting
.
customProfile
?.
logoUrl
;
const
title
=
(
user
?
user
.
nickname
||
user
.
username
:
workspaceGeneralSetting
.
customProfile
?.
title
)
||
"Memos"
;
const
avatarUrl
=
(
user
?
user
.
avatarUrl
:
workspaceGeneralSetting
.
customProfile
?.
logoUrl
)
||
"/logo.webp"
;
const
handleSignOut
=
async
()
=>
{
await
authServiceClient
.
signOut
({});
...
...
web/tailwind.config.js
View file @
ca213437
...
...
@@ -81,20 +81,6 @@ module.exports = {
md
:
"calc(var(--radius) - 2px)"
,
sm
:
"calc(var(--radius) - 4px)"
,
},
keyframes
:
{
"accordion-down"
:
{
from
:
{
height
:
"0"
},
to
:
{
height
:
"var(--radix-accordion-content-height)"
},
},
"accordion-up"
:
{
from
:
{
height
:
"var(--radix-accordion-content-height)"
},
to
:
{
height
:
"0"
},
},
},
animation
:
{
"accordion-down"
:
"accordion-down 0.2s ease-out"
,
"accordion-up"
:
"accordion-up 0.2s ease-out"
,
},
},
},
plugins
:
[
require
(
"tailwindcss-animate"
)],
...
...
web/vercel.json
deleted
100644 → 0
View file @
7a4d54bb
{
"rewrites"
:
[
{
"source"
:
"/(.*)"
,
"destination"
:
"/index.html"
}
]
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment