-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patha_main-packr.go
50 lines (47 loc) · 53.5 KB
/
a_main-packr.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Code generated by github.com/gobuffalo/packr. DO NOT EDIT.
package main
import "github.com/gobuffalo/packr"
// You can use the "packr clean" command to clean up this,
// and any other packr generated files.
func init() {
packr.PackJSONBytes("./templates", "Dockerfile.tpl", "\"IyMjIyMjIyMjIyMjIyMjIyMKIyBCdWlsZGVyIGltYWdlICMKIyMjIyMjIyMjIyMjIyMjIyMKRlJPTSBnb2xhbmc6MS4xMiBhcyBidWlsZGVyCgpFTlYgR08xMTFNT0RVTEU9b24KCiMgSW5zdGFsbCBnaXQgKyBTU0wgY2EgY2VydGlmaWNhdGVzLgojIEdpdCBpcyByZXF1aXJlZCBmb3IgZmV0Y2hpbmcgdGhlIGRlcGVuZGVuY2llcy4KIyBDQS1jZXJ0aWZpY2F0ZXMgaXMgcmVxdWlyZWQgdG8gY2FsbCBIVFRQUyBlbmRwb2ludHMuClJVTiBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgZ2l0IGNhLWNlcnRpZmljYXRlcyAmJiB1cGRhdGUtY2EtY2VydGlmaWNhdGVzCgojIENyZWF0ZSB1c2VyIGZvciB0aGUgcnVudGltZSBpbWFnZQpSVU4gYWRkdXNlciAtLWRpc2FibGVkLXBhc3N3b3JkIC0tZ2Vjb3MgJycgc2VydmljZXVzZXIKCiMgYnVpbGQgYmluYXJ5CldPUktESVIgL2J1aWxkCkNPUFkgLiAuClJVTiBDR09fRU5BQkxFRD0wIEdPT1M9bGludXggR09BUkNIPWFtZDY0IEdPRkxBR1M9LW1vZD12ZW5kb3IgZ28gYnVpbGQgIC1sZGZsYWdzPSItdyAtcyIgLW8gL2Jpbi97eyAuU2VydmljZS5OYW1lIH19IC4vY21kL3t7IC5TZXJ2aWNlLk5hbWUgfX0vbWFpbi5nbwoKCiMjIyMjIyMjIyMjIyMjIyMjCiMgUnVudGltZSBpbWFnZSAjCiMjIyMjIyMjIyMjIyMjIyMjCkZST00gc2NyYXRjaAoKIyAgc2VydmljZSBiaW5hcnkgYW5kIGFzc2V0cwpDT1BZIC0tZnJvbT1idWlsZGVyIC9iaW4ve3sgLlNlcnZpY2UuTmFtZSB9fSAve3sgLlNlcnZpY2UuTmFtZSB9fQojQ09QWSAuL21pZ3JhdGlvbnMgL21pZ3JhdGlvbnMKCiMgaW1wb3J0IGZyb20gYnVpbGRlcgpDT1BZIC0tZnJvbT1idWlsZGVyIC91c3Ivc2hhcmUvem9uZWluZm8gL3Vzci9zaGFyZS96b25laW5mbwpDT1BZIC0tZnJvbT1idWlsZGVyIC9ldGMvcGFzc3dkIC9ldGMvcGFzc3dkCkNPUFkgLS1mcm9tPWJ1aWxkZXIgL2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCAvZXRjL3NzbC9jZXJ0cy8KCiMgYmV0dGVyIG5vdCBydW4gYXMgcm9vdApVU0VSIHNlcnZpY2V1c2VyCgpFTlRSWVBPSU5UIFsiL3t7IC5TZXJ2aWNlLk5hbWUgfX0iXQoK\"")
packr.PackJSONBytes("./templates", "amqp_encode_decode.tpl", "\"cGFja2FnZSBhbXFwCgppbXBvcnQgKAogICAgImZtdCIKCiAgICAiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCiAgICB7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5TdWJzY3JpYmVyKSAwIH19CiAgICAiZ2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHJvdG8iCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQogICAge3stIGVuZCB9fQopCgp7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5QdWJsaXNoZXIpIDAgfX0Ke3stIHJhbmdlIC5TZXJ2aWNlLlB1Ymxpc2hlciB9fQp7ey0gdGVtcGxhdGUgImFtcXBfcHVibGlzaF9lbmNvZGUiIC4gLX19Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQoKe3stIGlmIGd0IChsZW4gLlNlcnZpY2UuU3Vic2NyaWJlcikgMCB9fQp7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQp7ey0gdGVtcGxhdGUgImFtcXBfc3Vic2NyaWJlX2RlY29kZSIgLiAtfX0Ke3stIGVuZCB9fQp7ey0gZW5kIH19Cgo=\"")
packr.PackJSONBytes("./templates", "amqp_publisher_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiY29udGV4dCIKCSJnaXRodWIuY29tL3BrZy9lcnJvcnMiCgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgopCgp0eXBlIFB1Ymxpc2hlclNldCBzdHJ1Y3QgewoJbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIHt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KICAgIHt7IHVudGl0bGUgLk5hbWUgfX0gcmFiYml0bXEuUHVibGlzaGVyCgl7ey0gZW5kIH19Cn0KCi8vIFB1Ymxpc2hlcnMgd2lsbCBpbml0aWFsaXplIGFsbCBBTVFQIHB1Ymxpc2hlcnMuIEVhY2ggcHVibGlzaGVyIHdpbGwgcmVjZWl2ZSBpdCdzIG93biBjaGFubmVsIHRvIHdvcmsgb24KLy8gdG8gcmVkdWNlIFRDUCBwcmVzc3VyZSBpbiB0aW1lcyBvZiBoaWdoIGxvYWQuCmZ1bmMgUHVibGlzaGVycyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSwgbG9nZ2dlciBsb2cuTG9nZ2VyKSBQdWJsaXNoZXJTZXQgewoJe3stIHJhbmdlIC5TZXJ2aWNlLlB1Ymxpc2hlciB9fQoJe3sgdW50aXRsZSAuTmFtZSB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gUHVibGlzaGVyU2V0ewoJCWxvZ2dlcjpsb2dnZ2VyLAoJCXt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KCQl7eyB1bnRpdGxlIC5OYW1lIH19OiByYWJiaXRtcS5OZXdQdWJsaXNoZXIoCgkJCXt7IHVudGl0bGUgLk5hbWUgfX1DaGFubmVsLAoJCQkmcmFiYml0bXEuUHVibGlzaGluZ3sKCQkJCVRvcGljOiAie3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0iLAoJCQkJRXhjaGFuZ2U6ICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsCgkJCQlEZWxpdmVyeU1vZGU6IHt7IC5QdWJsaXNoaW5nLkRlbGl2ZXJ5TW9kZSB9fSwKCQkJfSwKCQkpLAoJCXt7LSBlbmQgfX0KCX0KfQoKe3stICRzZXJ2aWNlTmFtZSA6PSB0aXRsZSAuU2VydmljZS5OYW1lIC19fQoKCnt7LSByYW5nZSAuU2VydmljZS5QdWJsaXNoZXIgfX0KZnVuYyAocHViIFB1Ymxpc2hlclNldCkgUHVibGlzaHt7IC5OYW1lIH19KGN0eCBjb250ZXh0LkNvbnRleHQsIGV2ZW50IGludGVyZmFjZXt9KSBlcnJvciB7Cglsb2dnZXIgOj0gcHViLmxvZ2dlci5XaXRoKCJ0b3BpYyIsICJ7eyAuUHVibGlzaGluZy5Ub3BpYyB9fSIsICJleGNoYW5nZSIsICJ7eyAuUHVibGlzaGluZy5FeGNoYW5nZSB9fSIsICJyZXF1ZXN0SWQiLCBncnBjX21ldGFkYXRhLkdldFJlcXVlc3RJRChjdHgpKQoKCWV2dCwgZXJyIDo9IHt7IC5OYW1lIH19RW5jb2RlcihldmVudCkKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGVuY29kZSBldmVudCIsICJldmVudCIsIGV2ZW50KQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gZW5jb2RlIGV2ZW50IikKCX0KCglpZiBlcnIgOj0gcHViLnt7IHVudGl0bGUgLk5hbWUgfX0uUHVibGlzaChjdHgsIGV2dCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQiLCAiZXJyIiwgZXJyKQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gcHVibGlzaCB0byAne3sgLlB1Ymxpc2hpbmcuVG9waWMgfX0nIikKCX0KCglsb2dnZXIuSW5mbygicHVibGlzaGVkICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgZXZlbnQiKQoJcmV0dXJuIG5pbAp9Cnt7LSBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "amqp_subscriber_handler.tpl", "\"cGFja2FnZSBzdWJzY3JpYmVyCgppbXBvcnQgKAoJImNvbnRleHQiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9yYWJiaXRtcSIKCWdycGNNZXRhZGF0YSAiZ2l0aHViLmNvbS9nby1nb2Rpbi9ncnBjLW1ldGFkYXRhIgoJImdpdGh1Yi5jb20vcGtnL2Vycm9ycyIKCgkie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCiAgICB7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQogICAge3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvICJ7eyAuUHJvdG9idWYuSW1wb3J0IH19IgogICAge3stIGVuZCB9fQopCgp7ey0gJHNlcnZpY2VOYW1lIDo9IHRpdGxlIC5TZXJ2aWNlLk5hbWUgLX19Cgp7ey8qCkxvb3Agb3ZlciBhbGwgc3Vic2NyaWJlcnMuIFRoZSBzbGljZSBpcyBmYWtlZCwgdGhvLiBUaGUgZ2VuZXJhdG9yIHdpbGwgcmVwbGFjZSB0aGUgc2xpY2Ugd2l0aCB0aGUgY3VycmVudApzdWJzY3JpYmVyIG9ubHksIHNvIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZWxlbWVudCBpbiB0aGUgc2xpY2UuCiovfX0Ke3sgcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQovLyB7eyAuSGFuZGxlciB9fVN1YnNjcmliZXIgaXMgcmVzcG9uc2libGUgb2YgaGFuZGxpbmcgYWxsIGluY29taW5nIEFNUVAgbWVzc2FnZXMgd2l0aCByb3V0aW5nIGtleSAne3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fScKLy8gSXQgbWlnaHQgc2VlbSBvdmVybHkgY29tcGxpY2F0ZWQgYXQgZmlyc3QsIGJ1dCB0aGUgZGVzaWduIGlzIG9uIHB1cnBvc2UuIFlvdSBXQU5UIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBEZWxpdmVyeSwKLy8gdGh1cyBpdCB3b3VsZCBub3QgbWFrZSBzZW5zZSB0byB1c2UgYSBtaWRkbGV3YXJlIGZvciBEZWNvZGluZyBpdCBpbnRvIGEgREFPIG9yIGRvbWFpbi1sZXZlbCBvYmplY3QgYXMgeW91IHdvdWxkCi8vIGxvb3NlIGFjY2VzcyB0byB0aGUgRGVsaXZlcnkuCmZ1bmMge3sgLkhhbmRsZXIgfX1TdWJzY3JpYmVyKGxvZ2dlciBsb2cuTG9nZ2VyLCB1c2VjYXNlIHNlcnZpY2Uue3sgdGl0bGUgJHNlcnZpY2VOYW1lIH19LCBkZWNvZGVyIHJhYmJpdG1xLlN1YnNjcmliZXJEZWNvZGVyKSByYWJiaXRtcS5TdWJzY3JpcHRpb25IYW5kbGVyIHsKCXJldHVybiBmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIGRlbGl2ZXJ5ICpyYWJiaXRtcS5EZWxpdmVyeSkgewoJCWxvZ2dlciA9IGxvZ2dlci5XaXRoKHN0cmluZyhncnBjTWV0YWRhdGEuUmVxdWVzdElEKSwgY3R4LlZhbHVlKHN0cmluZyhncnBjTWV0YWRhdGEuUmVxdWVzdElEKSkpCgoJCWV2ZW50LCBlcnIgOj0gZGVjb2Rle3sgLkhhbmRsZXIgfX0oZGVsaXZlcnksIGRlY29kZXIsIGxvZ2dlcikKCQlpZiBlcnIgIT0gbmlsIHsKCQkgICAgcmV0dXJuCgkJfQoKCQlfID0gZXZlbnQgLy8gcmVtb3ZlIHRoaXMgbGluZSwgaXQganVzdCBrZWVwcyB0aGUgY29tcGlsZXIgY2FsbSB1bnRpbCB5b3Ugc3RhcnQgdXNpbmcgdGhlIGV2ZW50IDopCgoJCS8vIFRPRE86IEhhbmRsZSB7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IHN1YnNjcmlwdGlvbiBoZXJlCgkJLyoKCQkJSWYgeW91IHdhbnQgdG8gTkFDSyB0aGUgZGVsaXZlcnksIHVzZSBgZGVsaXZlcnkuTmFja0RlbGl2ZXJ5KClgIGluc3RlYWQgb2YgTmFjaygpLgoJCQlUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIHByb21ldGhldXMgYW1xcF9uYWNrX2NvdW50ZXIgaXMgaW5jcmVhc2VkLgoJCSovCgoJCV8gPSBkZWxpdmVyeS5BY2soZmFsc2UpCiAgICB9Cn0KCi8vIGRlY29kZXt7IC5IYW5kbGVyIH19IGNsZWFucyB1cCB0aGUgYWN0dWFsIGhhbmRsZXIgYnkgcHJvdmlkaW5nIGEgY2xlYW5lciBpbnRlcmZhY2UgZm9yIGRlY29kaW5nIGluY29taW5nIHt7IC5Qcm90b2J1Zi5NZXNzYWdlIH19IGRlbGl2ZXJpZXMuCi8vIEl0IHdpbGwgYWxzbyB0YWtlIGNhcmUgb2YgbG9nZ2luZyBlcnJvcnMgYW5kIGhhbmRsaW5nIG1ldHJpY3MuCmZ1bmMgZGVjb2Rle3sgLkhhbmRsZXIgfX0oZGVsaXZlcnkgKnJhYmJpdG1xLkRlbGl2ZXJ5LCBkZWNvZGVyIHJhYmJpdG1xLlN1YnNjcmliZXJEZWNvZGVyLCBsb2dnZXIgbG9nLkxvZ2dlcikgKCp7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8ue3sgLlByb3RvYnVmLk1lc3NhZ2UgfX0sIGVycm9yKSB7CglldmVudCwgZXJyIDo9IGRlY29kZXIoZGVsaXZlcnkpCglpZiBlcnIgIT0gbmlsIHsKCQlpZiBlcnIyIDo9IGRlbGl2ZXJ5Lk5hY2tEZWxpdmVyeShmYWxzZSwgZmFsc2UsICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19Iik7IGVycjIgIT0gbmlsIHsKCQkJZXJyID0gZXJyb3JzLldyYXAoZXJyLCBlcnIyLkVycm9yKCkpCgkJfQoJCWRlbGl2ZXJ5LkluY3JlbWVudFRyYW5zcG9ydEVycm9yQ291bnRlcigie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIpCgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gZGVjb2RlIHt7IC5Qcm90b2J1Zi5NZXNzYWdlIH19IiwgImVyciIsIGVycikKCQlyZXR1cm4gbmlsLCBlcnIKCX0KCWxvZ2dlci5EZWJ1ZygiZGVjb2RlZCB7eyAuUHJvdG9idWYuTWVzc2FnZSB9fSIsICJldmVudCIsIGV2ZW50KQoKCXJldHVybiBldmVudC4oKnt7IHVudGl0bGUgLkhhbmRsZXIgfX1Qcm90by57eyAuUHJvdG9idWYuTWVzc2FnZSB9fSksIG5pbAp9Cnt7IGVuZCB9fQoK\"")
packr.PackJSONBytes("./templates", "amqp_subscriber_init.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4ge3sgLkdvZGluLlZlcnNpb24gfX07IERPIE5PVCBFRElULgpwYWNrYWdlIGFtcXAKCmltcG9ydCAoCgkiZ2l0aHViLmNvbS9wa2cvZXJyb3JzIgoKCSJnaXRodWIuY29tL2dvLWdvZGluL2xvZyIKCW1pZGRsZXdhcmUgImdpdGh1Yi5jb20vZ28tZ29kaW4vbWlkZGxld2FyZS9hbXFwIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vcmFiYml0bXEiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3N1YnNjcmliZXIiCikKCnR5cGUgU3Vic2NyaWJlclNldCBzdHJ1Y3QgewogICAge3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KICAgIHt7IHVudGl0bGUgLkhhbmRsZXIgfX0gcmFiYml0bXEuU3Vic2NyaWJlcgoJe3stIGVuZCB9fQp9CgovLyBTdWJzY3JpcHRpb25zIHdpbGwgaW5pdGlhbGl6ZSBhbGwgQU1RUCBzdWJzY3JpcHRpb25zLiBGb3IgZWFjaCBzdWJzY3JpcHRpb24sIGEgbmV3IEFNUVAgY2hhbm5lbCBpcyBjcmVhdGVkIG9uIHdoaWNoCi8vIHRoZSBDb25zdW1lKCkgZ29yb3V0aW5lIHdpbGwgcnVuIChvbmUgY2hhbm5lbCBwZXIgdGhyZWFkIHBvbGljeSkuCmZ1bmMgU3Vic2NyaXB0aW9ucyhjb25uICpyYWJiaXRtcS5SYWJiaXRNUSkgU3Vic2NyaWJlclNldCB7Cgl7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQoJe3sgdW50aXRsZSAuSGFuZGxlciB9fUNoYW5uZWwsIF8gOj0gY29ubi5OZXdDaGFubmVsKCkKCXt7LSBlbmQgfX0KCglyZXR1cm4gU3Vic2NyaWJlclNldHsKICAgIHt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19CiAgICAgICAge3sgdW50aXRsZSAuSGFuZGxlciB9fTogcmFiYml0bXEuTmV3U3Vic2NyaWJlcih7eyB1bnRpdGxlIC5IYW5kbGVyIH19Q2hhbm5lbCwgJnJhYmJpdG1xLlN1YnNjcmlwdGlvbnsKICAgICAgICAgICAgRXhjaGFuZ2U6ICJ7eyAuU3Vic2NyaXB0aW9uLkV4Y2hhbmdlIH19IiwKCQkgICAgVG9waWM6ICJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwKICAgICAgICAgICAgQXV0b0FjazogIHt7IC5TdWJzY3JpcHRpb24uQXV0b0FjayB9fSwKICAgICAgICAgICAgUHJlZmV0Y2hDb3VudDoge3sgLlN1YnNjcmlwdGlvbi5QcmVmZXRjaENvdW50IH19LAogICAgICAgICAgICBRdWV1ZTogcmFiYml0bXEuU3Vic2NyaXB0aW9uUXVldWV7CiAgICAgICAgICAgICAgICBBdXRvRGVsZXRlOiB7eyAuU3Vic2NyaXB0aW9uLlF1ZXVlLkF1dG9EZWxldGUgfX0sCiAgICAgICAgICAgICAgICBEdXJhYmxlOiAgICB7eyAuU3Vic2NyaXB0aW9uLlF1ZXVlLkR1cmFibGUgfX0sCiAgICAgICAgICAgICAgICBFeGNsdXNpdmU6ICB7eyAuU3Vic2NyaXB0aW9uLlF1ZXVlLkV4Y2x1c2l2ZSB9fSwKICAgICAgICAgICAgICAgIE5hbWU6ICAgICAgICJ7eyAuU3Vic2NyaXB0aW9uLlF1ZXVlLk5hbWUgfX0iLAogICAgICAgICAgICAgICAgTm9XYWl0OiAgICAge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5Ob1dhaXQgfX0sCiAgICAgICAgICAgIH0sCgkJfSksCgl7eyBlbmQgfX0KCX0KfQoKe3stICRzZXJ2aWNlTmFtZSA6PSB0aXRsZSAuU2VydmljZS5OYW1lIC19fQoKe3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KLy8ge3sgLkhhbmRsZXIgfX0gc2V0cyB1cCB0aGUgc3Vic2NyaXB0aW9uIHRvIHRoZSAne3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fScgdG9waWMuIEFsbCBtaWRkbGV3YXJlIGlzIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXJlZAovLyBhbmQgY2FsbGVkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6IFJlcXVlc3RJRCA9PiBQcm9tZXRoZXVzSW5zdHJ1bWVudGF0aW9uID0+IExvZ2dpbmcgPT4gc3Vic2NyaWJlci57eyAuSGFuZGxlciB9fQovLyBUaGUgUmVxdWVzdElEIG1pZGRsd2FyZSB3aWxsIGV4dHJhY3QgdGhlIHJlcXVlc3RJZCBmcm9tIHRoZSBkZWxpdmVyeSBoZWFkZXIgb3IgZ2VuZXJhdGUgYSBuZXcgb25lLiBUaGUgcmVxdWVzdElkIGlzCi8vIHRoZW4gbWFkIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBjb250ZXh0LgpmdW5jIChzcyBTdWJzY3JpYmVyU2V0KSB7eyAuSGFuZGxlciB9fShsb2dnZXIgbG9nLkxvZ2dlciwgdXNlY2FzZSBzZXJ2aWNlLnt7ICRzZXJ2aWNlTmFtZSB9fSkgZXJyb3IgewoJaGFuZGxlciA6PSBzdWJzY3JpYmVyLnt7IC5IYW5kbGVyIH19U3Vic2NyaWJlcihsb2dnZXIsIHVzZWNhc2UsIHt7IC5IYW5kbGVyIH19RGVjb2RlcikKCWhhbmRsZXIgPSBtaWRkbGV3YXJlLkxvZ2dpbmcobG9nZ2VyLCAie3sgLlN1YnNjcmlwdGlvbi5Ub3BpYyB9fSIsIGhhbmRsZXIpCgloYW5kbGVyID0gbWlkZGxld2FyZS5Qcm9tZXRoZXVzSW5zdHJ1bWVudGF0aW9uKCJ7eyAuU3Vic2NyaXB0aW9uLlRvcGljIH19IiwgaGFuZGxlcikKCWhhbmRsZXIgPSBtaWRkbGV3YXJlLlJlcXVlc3RJRChoYW5kbGVyKQoKCWlmIGVyciA6PSBzcy57eyB1bnRpdGxlIC5IYW5kbGVyIH19LlN1YnNjcmliZShoYW5kbGVyKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gc3Vic2NyaWJlIHRvIHt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iLCAiZXJyIiwgZXJyLCAidHJhbnNwb3J0IiwgIkFNUVAiKQoJCXJldHVybiBlcnJvcnMuV3JhcChlcnIsICJmYWlsZWQgdG8gc3Vic2NyaWJlIHRvIHt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0iKQoJfQoJbG9nZ2VyLkluZm8oCgkJInN1YnNjcmliZWQgdG8gdG9waWMgJ3t7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0nIiwKCQkidG9waWMiLCBzcy57eyB1bnRpdGxlIC5IYW5kbGVyIH19LlN1YnNjcmlwdGlvbi5Ub3BpYywKCQkicXVldWUiLCBzcy57eyB1bnRpdGxlIC5IYW5kbGVyIH19LlN1YnNjcmlwdGlvbi5RdWV1ZS5OYW1lLAoJCSJleGNoYW5nZSIsIHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU3Vic2NyaXB0aW9uLkV4Y2hhbmdlLAoJCSJwcmVmZXRjaF9jb3VudCIsIHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU3Vic2NyaXB0aW9uLlByZWZldGNoQ291bnQsCgkJInRyYW5zcG9ydCIsICJBTVFQIiwKCSkKCglyZXR1cm4gbmlsCn0Ke3sgZW5kIH19CgovLyBTaHV0ZG93biB3aWxsIGNhbGwgU2h1dGRvd24oKSBvbiBhbGwgcmVnaXN0ZXJlZCBzdWJzY3JpcHRpb25zCmZ1bmMgKHNzIFN1YnNjcmliZXJTZXQpIFNodXRkb3duKCkgKGVyciBlcnJvcikgewoJe3stIHJhbmdlIC5TZXJ2aWNlLlN1YnNjcmliZXIgfX0KCWVyciA9IHNzLnt7IHVudGl0bGUgLkhhbmRsZXIgfX0uU2h1dGRvd24oKQoJe3stIGVuZCB9fQoKCXJldHVybiBlcnIKfQo=\"")
packr.PackJSONBytes("./templates", "cmd_main.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImZtdCIKICAgICJuZXQiCiAgICAibmV0L2h0dHAiCiAgICAib3MiCiAgICAib3Mvc2lnbmFsIgogICAgInN5c2NhbGwiCgoJImdpdGh1Yi5jb20vb2tsb2cvb2tsb2cvcGtnL2dyb3VwIgoJImdpdGh1Yi5jb20vcHJvbWV0aGV1cy9jbGllbnRfZ29sYW5nL3Byb21ldGhldXMvcHJvbWh0dHAiCglnb29nbGVHcnBjICJnb29nbGUuZ29sYW5nLm9yZy9ncnBjIgoJImdpdGh1Yi5jb20vZ28tZ29kaW4vZ3JwYy1pbnRlcmNlcHRvciIKCSJnaXRodWIuY29tL2dvLWdvZGluL3JhYmJpdG1xIgoKICAgIHBiICJ7eyAuUHJvdG9idWYuUGFja2FnZSB9fSIKCSJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvYW1xcCIKICAgIHN2Y0dycGMgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9ncnBjIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL3VzZWNhc2UiCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UvbWlkZGxld2FyZSIKICAgICJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvc2VydmljZS9lbmRwb2ludCIKCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCnZhciBEZWJ1Z0FkZHIgPSBnZXRFbnYoIkRFQlVHX0FERFJFU1MiLCAiMC4wLjAuMDozMDAwIikKdmFyIEdycGNBZGRyID0gZ2V0RW52KCJHUlBDX0FERFJFU1MiLCAiMC4wLjAuMDo1MDA1MSIpCgovLyBncm91cCB0byBtYW5hZ2UgdGhlIGxpZmVjeWNsZSBmb3IgZ29yb3V0aW5lcwp2YXIgZyBncm91cC5Hcm91cAoKZnVuYyBtYWluKCkgewogICAgbG9nZ2VyIDo9IGxvZy5OZXdMb2dnZXJGcm9tRW52KCkKCiAgICAvLyBzZXR1cCBBTVFQIGNvbm5lY3Rpb25zIChzZXBhcmF0ZSBwdWJsaXNoIGFuZCBzdWJzY3JpYmUgY29ubmVjdGlvbnMgdG8gcmVkdWNlIEFNUVAgcHJlc3N1cmUpCgl7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5TdWJzY3JpYmVyKSAwIH19CglyYWJiaXRtcVN1YkNvbm4gOj0gaW5pdFJhYmJpdE1RKGxvZ2dlcikKCWRlZmVyIHJhYmJpdG1xU3ViQ29ubi5DbG9zZSgpCgl7ey0gZW5kIH19Cgl7ey0gaWYgZ3QgKGxlbiAuU2VydmljZS5QdWJsaXNoZXIpIDAgfX0KCXJhYmJpdG1xUHViQ29ubiA6PSBpbml0UmFiYml0TVEobG9nZ2VyKQoJZGVmZXIgcmFiYml0bXFQdWJDb25uLkNsb3NlKCkKCXt7LSBlbmQgfX0KCXt7IGlmIGd0IChsZW4gLlNlcnZpY2UuUHVibGlzaGVyKSAwIH19CgkvLyBpbml0IHB1Ymxpc2hlcnMKCXB1Ymxpc2hlcnMgOj0gYW1xcC5QdWJsaXNoZXJzKHJhYmJpdG1xUHViQ29ubiwgbG9nZ2VyKQoJe3stIGVuZCB9fQoKCS8vIGluaXRpYWxpemUgc2VydmljZSBpbmNsdWRpbmcgbWlkZGxld2FyZQoJdmFyIHN2YyBzZXJ2aWNlLnt7IHRpdGxlIC5TZXJ2aWNlLk5hbWUgfX0KCXt7LyoKCQlEZXBlbmRpbmcgb24gd2hpY2ggYnVuZGxlcyBhcmUgYWN0aXZhdGVkLCB0aGUgcGFyYW1ldGVyIGxpc3Qgb2YgdGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gaXMgZ29pbmcgdG8gY2hhbmdlLgoJCVRoaXMgaXMgYSB0cmlja3kgYml0IGFzIGFsbCBjb21iaW5hdGlvbnMgbmVlZCB0byBiZSB0YWtlbiBjYXJlIG9mLgoJKi99fQoJe3stIGlmIGd0IChsZW4gLlNlcnZpY2UuUHVibGlzaGVyKSAwIH19CglzdmMgPSB1c2VjYXNlLk5ld1NlcnZpY2VJbXBsZW1lbnRhdGlvbihsb2dnZXIsIHB1Ymxpc2hlcnMpCgl7ey0gZWxzZSB9fQoJc3ZjID0gdXNlY2FzZS5OZXdTZXJ2aWNlSW1wbGVtZW50YXRpb24obG9nZ2VyKQoJe3stIGVuZCB9fQoKCXt7LSBpZiAuU2VydmljZS5Mb2dnaW5nTWlkZGxld2FyZSB9fQoJc3ZjID0gbWlkZGxld2FyZS5Mb2dnaW5nTWlkZGxld2FyZShsb2dnZXIpKHN2YykKCXt7LSBlbmQgfX0KCgkvLyBpbml0aWFsaXplIGVuZHBvaW50IGFuZCB0cmFuc3BvcnQgbGF5ZXJzCgl2YXIgKAoJCWVuZHBvaW50cyAgID0gZW5kcG9pbnQuRW5kcG9pbnRzKHN2YywgbG9nZ2VyKQoJCWdycGNIYW5kbGVyID0gc3ZjR3JwYy5OZXdTZXJ2ZXIoZW5kcG9pbnRzLCBsb2dnZXIpCgkpCgoJLy8gc2VydmUgZ1JQQyBzZXJ2ZXIKCWdycGNTZXJ2ZXIgOj0gZ29vZ2xlR3JwYy5OZXdTZXJ2ZXIoCgkgICAgZ29vZ2xlR3JwYy5VbmFyeUludGVyY2VwdG9yKGdycGNfaW50ZXJjZXB0b3IuVW5hcnlJbnRlcmNlcHRvciksCgkpCglnLkFkZChpbml0R3JwYyhncnBjU2VydmVyLCBncnBjSGFuZGxlciwgbG9nZ2VyKSwgZnVuYyhlcnJvcikgewoJCWdycGNTZXJ2ZXIuR3JhY2VmdWxTdG9wKCkKCX0pCgoJLy8gc2VydmUgZGVidWcgaHR0cCBzZXJ2ZXIgKHByb21ldGhldXMpCglodHRwLkRlZmF1bHRTZXJ2ZU11eC5IYW5kbGUoIi9tZXRyaWNzIiwgcHJvbWh0dHAuSGFuZGxlcigpKQoJZGVidWdMaXN0ZW5lciA6PSBpbml0RGVidWdIdHRwKGxvZ2dlcikKCWcuQWRkKGZ1bmMoKSBlcnJvciB7CgkJbG9nZ2VyLkxvZygidHJhbnNwb3J0IiwgImRlYnVnL0hUVFAiLCAiYWRkciIsIERlYnVnQWRkcikKCQlyZXR1cm4gaHR0cC5TZXJ2ZShkZWJ1Z0xpc3RlbmVyLCBodHRwLkRlZmF1bHRTZXJ2ZU11eCkKCX0sIGZ1bmMoZXJyb3IpIHsKCQlkZWJ1Z0xpc3RlbmVyLkNsb3NlKCkKCX0pCgoJLy8gV2FpdCBmb3IgU0lHSU5UIG9yIFNJR1RFUk0gYW5kIHN0b3AgZ3JhY2VmdWxseQoJY2FuY2VsSW50ZXJydXB0IDo9IG1ha2UoY2hhbiBzdHJ1Y3R7fSkKCWcuQWRkKHNodXRkb3duSGFuZGxlcihjYW5jZWxJbnRlcnJ1cHQpLCBmdW5jKGUgZXJyb3IpIHsKCQljbG9zZShjYW5jZWxJbnRlcnJ1cHQpCgl9KQoKCS8vIHJ1bgoJaWYgZXJyIDo9IGcuUnVuKCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5Mb2coImZhdGFsIiwgZXJyKQoJCW9zLkV4aXQoMSkKCX0KfQoK\"")
packr.PackJSONBytes("./templates", "cmd_main_gen.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KcGFja2FnZSBtYWluCgppbXBvcnQgKAogICAgImZtdCIKICAgICJuZXQiCiAgICAib3MiCiAgICAib3Mvc2lnbmFsIgogICAgInN5c2NhbGwiCgoJZ29vZ2xlR3JwYyAiZ29vZ2xlLmdvbGFuZy5vcmcvZ3JwYyIKCSJnaXRodWIuY29tL2dvLWdvZGluL3JhYmJpdG1xIgoKICAgIHBiICJ7eyAuUHJvdG9idWYuUGFja2FnZSB9fSIKCSJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvYW1xcCIKICAgICJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvc2VydmljZSIKCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCi8vIGdldEVudiBnZXQga2V5IGVudmlyb25tZW50IHZhcmlhYmxlIGlmIGV4aXN0IG90aGVyd2lzZSByZXR1cm4gZGVmYXVsdFZhbHVlCmZ1bmMgZ2V0RW52KGtleSwgZGVmYXVsdFZhbHVlIHN0cmluZykgc3RyaW5nIHsKCXZhbHVlIDo9IG9zLkdldGVudihrZXkpCglpZiBsZW4odmFsdWUpID09IDAgewoJCXJldHVybiBkZWZhdWx0VmFsdWUKCX0KCXJldHVybiB2YWx1ZQp9CgovLyBzaHV0ZG93bkhhbmRsZXIgdG8gaGFuZGxlIGdyYWNlZnVsIHNodXRkb3ducwpmdW5jIHNodXRkb3duSGFuZGxlcihpbnRlcnJ1cHRDaGFubmVsIGNoYW4gc3RydWN0e30pIGZ1bmMoKSBlcnJvciB7CglyZXR1cm4gZnVuYygpIGVycm9yIHsKCQljIDo9IG1ha2UoY2hhbiBvcy5TaWduYWwsIDEpCgkJc2lnbmFsLk5vdGlmeShjLCBzeXNjYWxsLlNJR0lOVCwgc3lzY2FsbC5TSUdURVJNKQoJCXNlbGVjdCB7CgkJY2FzZSBzaWcgOj0gPC1jOgoJCQlyZXR1cm4gZm10LkVycm9yZigicmVjZWl2ZWQgc2lnbmFsICVzIiwgc2lnKQoJCWNhc2UgPC1pbnRlcnJ1cHRDaGFubmVsOgoJCQlyZXR1cm4gbmlsCgkJfQoJfQp9CgovLyBpbml0R3JwYyBzZXJ2ZSB1cCBHUlBDCmZ1bmMgaW5pdEdycGMoZ3JwY1NlcnZlciAqZ29vZ2xlR3JwYy5TZXJ2ZXIsIGhhbmRsZXIgcGIue3sgLlByb3RvYnVmLlNlcnZpY2UgfX1TZXJ2ZXIsIGxvZ2dlciBsb2cuTG9nZ2VyKSBmdW5jKCkgZXJyb3IgewoJZ3JwY0xpc3RlbmVyLCBlcnIgOj0gbmV0Lkxpc3RlbigidGNwIiwgR3JwY0FkZHIpCglpZiBlcnIgIT0gbmlsIHsKCQlsb2dnZXIuTG9nKCJ0cmFuc3BvcnQiLCAiZ1JQQyIsICJkdXJpbmciLCAiTGlzdGVuIiwgImVyciIsIGVycikKCQlvcy5FeGl0KDEpCgl9CgoJcmV0dXJuIGZ1bmMoKSBlcnJvciB7CgkJbG9nZ2VyLkxvZygidHJhbnNwb3J0IiwgImdSUEMiLCAiYWRkciIsIEdycGNBZGRyKQoJCXBiLlJlZ2lzdGVye3sgLlByb3RvYnVmLlNlcnZpY2UgfX1TZXJ2ZXIoZ3JwY1NlcnZlciwgaGFuZGxlcikKCQlyZXR1cm4gZ3JwY1NlcnZlci5TZXJ2ZShncnBjTGlzdGVuZXIpCgl9Cn0KCnt7IGlmIC5TZXJ2aWNlLlRyYW5zcG9ydC5BTVFQIH19Ci8vIGluaXRSYWJiaXRNUSB3aWxsIGluaXRpYWxpemUgdGhlIGFtcXAgY29ubmVjdGlvbiBhbmQgY3JlYXRlIGEgbmV3IGNoYW5uZWwKZnVuYyBpbml0UmFiYml0TVEobG9nZ2VyIGxvZy5Mb2dnZXIpICpyYWJiaXRtcS5SYWJiaXRNUSB7CglyYWJiaXRtcUNvbm4sIGVyciA6PSByYWJiaXRtcS5OZXdSYWJiaXRNUUZyb21FbnYoKQoJaWYgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSYWJiaXRNUSBjb25uZWN0aW9uIiwgImVyciIsIGVycikKCQlvcy5FeGl0KC0xKQoJfQoJaWYgZXJyIDo9IHJhYmJpdG1xQ29ubi5Db25uZWN0KCk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGNvbm5lY3QgdG8gUmFiYml0TVEiLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoLTEpCgl9CglpZiByYWJiaXRtcUNvbm4uQ2hhbm5lbCwgZXJyID0gcmFiYml0bXFDb25uLk5ld0NoYW5uZWwoKTsgZXJyICE9IG5pbCB7CgkJbG9nZ2VyLkVycm9yKCJmYWlsZWQgdG8gY3JlYXRlIEFNUVAgY2hhbm5lbCIsICJlcnIiLCBlcnIpCgkJb3MuRXhpdCgtMSkKCX0KCglyZXR1cm4gcmFiYml0bXFDb25uCn0Ke3sgZW5kIH19Cgp7eyBpZiBndCAobGVuIC5TZXJ2aWNlLlN1YnNjcmliZXIpIDAgfX0KZnVuYyBpbml0U3Vic2NyaXB0aW9ucyhsb2dnZXIgbG9nLkxvZ2dlciwgc3ZjIHNlcnZpY2Uue3sgdGl0bGUgLlNlcnZpY2UuTmFtZX19LCBjb25uZWN0aW9uICpyYWJiaXRtcS5SYWJiaXRNUSkgewoJc3Vic2NyaXB0aW9ucyA6PSBhbXFwLlN1YnNjcmlwdGlvbnMoY29ubmVjdGlvbikKCXt7LSByYW5nZSAuU2VydmljZS5TdWJzY3JpYmVyIH19CglpZiBlcnIgOj0gc3Vic2NyaXB0aW9ucy57eyAuSGFuZGxlciB9fShsb2dnZXIsIHN2Yyk7IGVyciAhPSBuaWwgewoJCWxvZ2dlci5FcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBzdWJzY3JpcHRpb24iLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoLTEpCgl9Cgl7ey0gZW5kIH19Cn0Ke3stIGVuZCB9fQoKZnVuYyBpbml0RGVidWdIdHRwKGxvZ2dlciBsb2cuTG9nZ2VyKSBuZXQuTGlzdGVuZXIgewoJZGVidWdMaXN0ZW5lciwgZXJyIDo9IG5ldC5MaXN0ZW4oInRjcCIsIERlYnVnQWRkcikKCWlmIGVyciAhPSBuaWwgewoJCWxvZ2dlci5Mb2coInRyYW5zcG9ydCIsICJkZWJ1Zy9IVFRQIiwgImR1cmluZyIsICJMaXN0ZW4iLCAiZXJyIiwgZXJyKQoJCW9zLkV4aXQoMSkKCX0KCXJldHVybiBkZWJ1Z0xpc3RlbmVyCn0KCg==\"")
packr.PackJSONBytes("./templates", "domain_errors.tpl", "\"cGFja2FnZSBkb21haW4KCmltcG9ydCAiZXJyb3JzIgoKLy8gRG9tYWluIGVycm9ycwovLyBUaGVzZSBjYW4gdGhlbiBiZSByZW1hcHBlZCB0byB0cmFuc3BvcnQtc3BlY2lmaWMgZXJyb3JzIGluIHRoZSB0cmFuc3BvcnQgbGF5ZXIgKGdSUEMsIEhUVFAsIEFNUVAgLi4uKQp2YXIgKAogICAgRXJyTm90SW1wbGVtZW50ZWQgPSBlcnJvcnMuTmV3KCJlbmRwb2ludCBub3QgaW1wbGVtZW50ZWQiKQopCg==\"")
packr.PackJSONBytes("./templates", "endpoint_set.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgZW5kcG9pbnQKCmltcG9ydCAoCiAgICAiZ2l0aHViLmNvbS9nby1raXQva2l0L2VuZHBvaW50IgoKICAgICJnaXRodWIuY29tL2dvLWdvZGluL21pZGRsZXdhcmUiCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCgkiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCikKCnR5cGUgU2V0IHN0cnVjdCB7CiAgICB7eyByYW5nZSAuU2VydmljZS5NZXRob2RzIH19CiAgICAgICAge3sgLk5hbWUgfX1FbmRwb2ludCBlbmRwb2ludC5FbmRwb2ludAogICAgIHt7LSBlbmQgfX0KfQoKZnVuYyBFbmRwb2ludHMoc2VydmljZSBzZXJ2aWNlLnt7IHRpdGxlIC5TZXJ2aWNlLk5hbWUgfX0sIGxvZ2dlciBsb2cuTG9nZ2VyKSBTZXQgewogICAge3sgcmFuZ2UgLlNlcnZpY2UuTWV0aG9kcyB9fQogICAgdmFyIHt7IHVudGl0bGUgLk5hbWUgfX0gZW5kcG9pbnQuRW5kcG9pbnQKICAgIHsKICAgICAgICB7eyB1bnRpdGxlIC5OYW1lIH19ID0ge3sgLk5hbWUgfX1FbmRwb2ludChzZXJ2aWNlKQogICAgICAgIHt7IHVudGl0bGUgLk5hbWUgfX0gPSBtaWRkbGV3YXJlLkluc3RydW1lbnRHUlBDKCJ7eyAuTmFtZSB9fSIpKHt7IHVudGl0bGUgLk5hbWUgfX0pCiAgICAgICAge3sgdW50aXRsZSAuTmFtZSB9fSA9IG1pZGRsZXdhcmUuTG9nZ2luZyhsb2dnZXIsICJ7eyAuTmFtZSB9fSIpKHt7IHVudGl0bGUgLk5hbWUgfX0pCiAgICAgICAge3sgdW50aXRsZSAuTmFtZSB9fSA9IG1pZGRsZXdhcmUuUmVxdWVzdElEKCkoe3sgdW50aXRsZSAuTmFtZSB9fSkKICAgIH0KICAgIHt7LSBlbmQgfX0KCiAgICByZXR1cm4gU2V0ewogICAgICAgIHt7LSByYW5nZSAuU2VydmljZS5NZXRob2RzIH19CiAgICAgICAgICAgIHt7IC5OYW1lIH19RW5kcG9pbnQ6IHt7IHVudGl0bGUgLk5hbWV9fSwKICAgICAgICB7ey0gZW5kIH19CiAgICB9Cn0KCg==\"")
packr.PackJSONBytes("./templates", "endpoints.tpl", "\"cGFja2FnZSBlbmRwb2ludAoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgImdpdGh1Yi5jb20vZ28ta2l0L2tpdC9lbmRwb2ludCIKCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UiCikKCnt7LSByYW5nZSAuU2VydmljZS5NZXRob2RzIC19fQp7ey0gdGVtcGxhdGUgImVuZHBvaW50IiAuIC19fQp7ey0gZW5kIC19fQ==\"")
packr.PackJSONBytes("./templates", "gitignore.tpl", "\"IyBNYWMgT1MgZmlsZXMKLkRTX1N0b3JlCip+CgojIENvbXBpbGVkIE9iamVjdCBmaWxlcywgU3RhdGljIGFuZCBEeW5hbWljIGxpYnMgKFNoYXJlZCBPYmplY3RzKQoqLm8KKi5hCiouc28KCiMgRm9sZGVycwpfb2JqCl90ZXN0Ci5pZGVhLwoudnNjb2RlLwpidWlsZC8KYmluLwoKIyBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZXh0ZW5zaW9ucy9wcmVmaXhlcwoqLls1Njh2cV0KWzU2OHZxXS5vdXQKCiouY2dvMS5nbwoqLmNnbzIuYwpfY2dvX2RlZnVuLmMKX2Nnb19nb3R5cGVzLmdvCl9jZ29fZXhwb3J0LioKCl90ZXN0bWFpbi5nbwoKdGFncwoqLmV4ZQoqLnRlc3QKKi5wcm9mCgojIHNlY3JldHMKLmVudgo=\"")
packr.PackJSONBytes("./templates", "grpc_encode_decode.tpl", "\"cGFja2FnZSBncnBjCgppbXBvcnQgKAogICAgImdvb2dsZS5nb2xhbmcub3JnL2dycGMvY29kZXMiCiAgICAiZ29vZ2xlLmdvbGFuZy5vcmcvZ3JwYy9zdGF0dXMiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL2VuZHBvaW50IgoJInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL2RvbWFpbiIKICAgIHBiICJ7eyAuUHJvdG9idWYuUGFja2FnZSB9fSIKKQoKLy8gLS0tLS0tLS0tLS0tLS0tLVsgRVJST1JTIF0tLS0tLS0tLS0tLS0tLS0tCgovLyBFbmNvZGVFcnJvciBlbmNvZGVzIGRvbWFpbi1sZXZlbCBlcnJvcnMgaW50byBnUlBDIHRyYW5zcG9ydC1sZXZlbCBlcnJvcnMKZnVuYyBFbmNvZGVFcnJvcihlcnIgZXJyb3IpIGVycm9yIHsKICAgIHN3aXRjaCBlcnIgewoJY2FzZSBkb21haW4uRXJyTm90SW1wbGVtZW50ZWQ6CgkJcmV0dXJuIHN0YXR1cy5FcnJvcihjb2Rlcy5VbmltcGxlbWVudGVkLCBlcnIuRXJyb3IoKSkKICAgIGRlZmF1bHQ6CiAgICAgICAgcmV0dXJuIHN0YXR1cy5FcnJvcihjb2Rlcy5Vbmtub3duLCBlcnIuRXJyb3IoKSkKICAgIH0KICAgIHJldHVybiBlcnIKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLVsgTUFQUElORyBGVU5DUyBdLS0tLS0tLS0tLS0tLS0tLQoKLy8gVE9ETzogdGhpcyBpcyBhIG5pY2Ugc3BvdCBmb3IgY29udmVuaWVuY2UgbWFwcGluZyBmdW5jdGlvbnMgOikKCi8vIC0tLS0tLS0tLS0tLS0tLS1bIEVOQ09ERVIgLyBERUNPREVSIF0tLS0tLS0tLS0tLS0tLS0tCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0Ke3stIHRlbXBsYXRlICJncnBjX3JlcXVlc3RfZGVjb2RlciIgLiB9fQp7ey0gdGVtcGxhdGUgImdycGNfcmVzcG9uc2VfZW5jb2RlciIgLiB9fQp7ey0gdGVtcGxhdGUgImdycGNfcmVxdWVzdF9lbmNvZGVyIiAuIH19Cnt7LSB0ZW1wbGF0ZSAiZ3JwY19yZXNwb25zZV9kZWNvZGVyIiAuIH19Cnt7LSBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "grpc_request_response.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgZ3JwYwoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgImVycm9ycyIKCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UvZW5kcG9pbnQiCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCikKCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0Ke3sgdGVtcGxhdGUgImdycGNfZW5jb2RlX3JlcXVlc3QiIC4gfX0Ke3sgdGVtcGxhdGUgImdycGNfZGVjb2RlX3Jlc3BvbnNlIiAuIH19Cnt7IHRlbXBsYXRlICJncnBjX2VuY29kZV9yZXNwb25zZSIgLiB9fQp7eyB0ZW1wbGF0ZSAiZ3JwY19kZWNvZGVfcmVxdWVzdCIgLiB9fQp7eyBlbmQgfX0=\"")
packr.PackJSONBytes("./templates", "grpc_server.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgZ3JwYwoKaW1wb3J0ICgKICAgICJjb250ZXh0IgoKCWtpdEdycGMgImdpdGh1Yi5jb20vZ28ta2l0L2tpdC90cmFuc3BvcnQvZ3JwYyIKCiAgICAiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCiAgICAie3sgLlNlcnZpY2UuTW9kdWxlIH19L2ludGVybmFsL3NlcnZpY2UvZW5kcG9pbnQiCiAgICBwYiAie3sgLlByb3RvYnVmLlBhY2thZ2UgfX0iCikKCnR5cGUgZ3JwY1NlcnZlciBzdHJ1Y3Qgewp7eyByYW5nZSAuU2VydmljZS5NZXRob2RzIH19CiAgICB7ey0gLk5hbWUgfX1IYW5kbGVyIGtpdEdycGMuSGFuZGxlcgp7eyBlbmQgfX0KfQoKZnVuYyBOZXdTZXJ2ZXIoZW5kcG9pbnRzIGVuZHBvaW50LlNldCwgbG9nZ2VyIGxvZy5Mb2dnZXIpIHBiLnt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19U2VydmVyIHsKICAgIC8vIFRPRE86IGNvbmZpZ3VyYWJsZSBTZXJ2ZXJPcHRpb25zIHZpYSBnb2Rpbi5qc29uCglvcHRpb25zIDo9IFtda2l0R3JwYy5TZXJ2ZXJPcHRpb257fQoKICAgIHJldHVybiAmZ3JwY1NlcnZlcnsKICAgIHt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KICAgIHt7LSAuTmFtZSB9fUhhbmRsZXI6IGtpdEdycGMuTmV3U2VydmVyKAogICAgICAgIGVuZHBvaW50cy57eyAuTmFtZSB9fUVuZHBvaW50LAogICAgICAgIERlY29kZXt7IC5SZXF1ZXN0IH19LAogICAgICAgIEVuY29kZXt7IC5SZXNwb25zZSB9fSwKICAgICAgICBhcHBlbmQob3B0aW9ucykuLi4sCiAgICApLAogICAge3sgZW5kIH19CiAgICB9Cn0KCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KZnVuYyAocyAqZ3JwY1NlcnZlcikge3sgLk5hbWUgfX0oY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxICpwYi57eyAuUHJvdG9idWZSZXF1ZXN0IH19KSAoKnBiLnt7IC5Qcm90b2J1ZlJlc3BvbnNlIH19LCBlcnJvcikgewogICAgXywgcmVzcCwgZXJyIDo9IHMue3sgLk5hbWUgfX1IYW5kbGVyLlNlcnZlR1JQQyhjdHgsIHJlcSkKICAgIGlmIGVyciAhPSBuaWwgewogICAgICAgIHJldHVybiBuaWwsIEVuY29kZUVycm9yKGVycikKICAgIH0KICAgIHJldHVybiByZXNwLigqcGIue3sgLlByb3RvYnVmUmVzcG9uc2UgfX0pLCBuaWwKfQp7eyBlbmQgfX0=\"")
packr.PackJSONBytes("./templates", "implementation.tpl", "\"cGFja2FnZSB1c2VjYXNlCgppbXBvcnQgKAogICAgImNvbnRleHQiCgogICAgImdpdGh1Yi5jb20vZ28tZ29kaW4vbG9nIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgoJInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL2RvbWFpbiIKKQoKLy8gVXNlQ2FzZSBpbXBsZW1lbnRzIGFsbCBidXNpbmVzcyB1c2UtY2FzZXMKdHlwZSBVc2VDYXNlIHN0cnVjdCB7CiAgICBsb2dnZXIgbG9nLkxvZ2dlcgp9CgovLyBOZXdTZXJ2aWNlSW1wbGVtZW50YXRpb24gY29uc3RydWN0cyB0aGUgdXNlLWNhc2UgKHNlcnZpY2UpIGxheWVyIG9mIHRoZSBtaWNyb3NlcnZpY2UuCi8vIEl0IHByb3ZpZGVzIHRoZSB3aG9sZSBidXNpbmVzcyB1c2UtY2FzZXMgYW5kIHdvcmtzIG9uIHRoZSBkb21haW4gZW50aXRpZXMuCmZ1bmMgTmV3U2VydmljZUltcGxlbWVudGF0aW9uKGxvZ2dlciBsb2cuTG9nZ2VyKSAqVXNlQ2FzZSB7CiAgICByZXR1cm4gJnNlcnZpY2VJbXBsZW1lbnRhdGlvbnsKICAgICAgICBsb2dnZXI6IGxvZ2dlciwKICAgIH0KfQoKe3stIHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0Ke3stIHRlbXBsYXRlICJzZXJ2aWNlX21ldGhvZCIgLiB9fQp7ey0gZW5kIH19CgoK\"")
packr.PackJSONBytes("./templates", "k8s_deployment.tpl", "\"YXBpVmVyc2lvbjogYXBwcy92MQpraW5kOiBEZXBsb3ltZW50Cm1ldGFkYXRhOgogIGxhYmVsczoKICAgIGFwcDoge3sgLlNlcnZpY2UuTmFtZSB9fQogICAgcGxhdGZvcm06IGdvCiAgICBmcmFtZXdvcms6IGdva2l0CiAgICBnZW5lcmF0b3I6IGdvZGluCiAgICB2ZXJzaW9uOiB7eyAuU2VydmljZS5OYW1lc3BhY2UgfX0te3sgLlNlcnZpY2UuTmFtZSB9fS12ZXJzaW9uCiAgbmFtZToge3sgLlNlcnZpY2UuTmFtZSB9fQogIG5hbWVzcGFjZToge3sgLlNlcnZpY2UuTmFtZXNwYWNlIH19CnNwZWM6CiAgcHJvZ3Jlc3NEZWFkbGluZVNlY29uZHM6IDYwMAogIHJlcGxpY2FzOiAxCiAgcmV2aXNpb25IaXN0b3J5TGltaXQ6IDEwCiAgc2VsZWN0b3I6CiAgICBtYXRjaExhYmVsczoKICAgICAgYXBwOiB7eyAuU2VydmljZS5OYW1lIH19CiAgc3RyYXRlZ3k6CiAgICByb2xsaW5nVXBkYXRlOgogICAgICBtYXhTdXJnZTogMQogICAgICBtYXhVbmF2YWlsYWJsZTogMAogICAgdHlwZTogUm9sbGluZ1VwZGF0ZQogIHRlbXBsYXRlOgogICAgbWV0YWRhdGE6CiAgICAgIGFubm90YXRpb25zOgogICAgICAgIHByb21ldGhldXMuaW8uc2NyYXBlOiAidHJ1ZSIKICAgICAgICBwcm9tZXRoZXVzLmlvLnBvcnQ6ICIzMDAwIgogICAgICAgIHByb21ldGhldXMuaW8ucGF0aDogL21ldHJpY3MKICAgICAgbGFiZWxzOgogICAgICAgIGFwcDoge3sgLlNlcnZpY2UuTmFtZSB9fQogICAgICAgIHBsYXRmb3JtOiBnbwogICAgICAgIGZyYW1ld29yazogZ29raXQKICAgICAgICBnZW5lcmF0b3I6IGdvZGluCiAgICAgICAgdmVyc2lvbjoge3sgLlNlcnZpY2UuTmFtZXNwYWNlIH19LXt7IC5TZXJ2aWNlLk5hbWUgfX0tdmVyc2lvbgogICAgc3BlYzoKICAgICAgY29udGFpbmVyczoKICAgICAgICAtIGVudjoKICAgICAgICAgICAgLSBuYW1lOiBUWgogICAgICAgICAgICAgIHZhbHVlOiBFdXJvcGUvWnVyaWNoCiAgICAgICAgICAgIC0gbmFtZTogR1JQQ19BRERSRVNTCiAgICAgICAgICAgICAgdmFsdWU6ICIwLjAuMC4wOjUwMDUxIgogICAgICAgICAgICAtIG5hbWU6IERFQlVHX0FERFJFU1MKICAgICAgICAgICAgICB2YWx1ZTogIjAuMC4wLjA6MzAwMCIKICAgICAgICAgICAgLSBuYW1lOiBMT0dfTEVWRUwKICAgICAgICAgICAgICB2YWx1ZTogImluZm8iCiAgICAgICAgICAgIHt7LSBpZiAuU2VydmljZS5UcmFuc3BvcnQuQU1RUCB9fQogICAgICAgICAgICAtIG5hbWU6IEFNUVBfQUREUkVTUwogICAgICAgICAgICAgIHZhbHVlRnJvbToKICAgICAgICAgICAgICAgIHNlY3JldEtleVJlZjoKICAgICAgICAgICAgICAgICAga2V5OiBNRVNTQUdFX0JST0tFUl9VUkwKICAgICAgICAgICAgICAgICAgbmFtZTogcmFiYml0bXEKICAgICAgICAgICAgICAgICAgb3B0aW9uYWw6IGZhbHNlCiAgICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgIGltYWdlOiB7eyAuRG9ja2VyLlJlZ2lzdHJ5IH19L3t7IC5TZXJ2aWNlLk5hbWVzcGFjZSB9fS17eyAuU2VydmljZS5OYW1lIH19Ont7IC5TZXJ2aWNlLk5hbWVzcGFjZSB9fS17eyAuU2VydmljZS5OYW1lIH19LXZlcnNpb24KICAgICAgICAgIGltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICAgICAgICBuYW1lOiB7eyAuU2VydmljZS5OYW1lIH19CiAgICAgICAgICByZXNvdXJjZXM6CiAgICAgICAgICAJcmVxdWVzdHM6CiAgICAgICAgICAJICBjcHU6IDFtCiAgICAgICAgICAgICAgbWVtb3J5OiAxNU1pCiAgICAgICAgICBzZWN1cml0eUNvbnRleHQ6CiAgICAgICAgICAgIGFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbjogZmFsc2UKICAgICAgICAgICAgcHJpdmlsZWdlZDogZmFsc2UKICAgICAgICAgICAgY2FwYWJpbGl0aWVzOgogICAgICAgICAgICAgIGRyb3A6CiAgICAgICAgICAgICAgICAtIGFsbAogICAgICAgICAgICByZWFkT25seVJvb3RGaWxlc3lzdGVtOiB0cnVlCiAgICAgICAgICAgIHJ1bkFzTm9uUm9vdDogdHJ1ZQogICAgICAgICAgICBydW5Bc1VzZXI6IDY1NTM0CiAgICAgICAgICBzdGRpbjogdHJ1ZQogICAgICAgICAgdGVybWluYXRpb25NZXNzYWdlUGF0aDogL2Rldi90ZXJtaW5hdGlvbi1sb2cKICAgICAgICAgIHRlcm1pbmF0aW9uTWVzc2FnZVBvbGljeTogRmlsZQogICAgICAgICAgdHR5OiB0cnVlCiAgICAgIGRuc1BvbGljeTogQ2x1c3RlckZpcnN0CiAgICAgIHJlc3RhcnRQb2xpY3k6IEFsd2F5cwogICAgICBzY2hlZHVsZXJOYW1lOiBkZWZhdWx0LXNjaGVkdWxlcgogICAgICBzZWN1cml0eUNvbnRleHQ6IHt9CiAgICAgIHRlcm1pbmF0aW9uR3JhY2VQZXJpb2RTZWNvbmRzOiAzMAo=\"")
packr.PackJSONBytes("./templates", "k8s_service.tpl", "\"YXBpVmVyc2lvbjogdjEKa2luZDogU2VydmljZQptZXRhZGF0YToKICBuYW1lOiB7eyAuU2VydmljZS5OYW1lIH19CiAgbmFtZXNwYWNlOiB7eyAuU2VydmljZS5OYW1lc3BhY2UgfX0Kc3BlYzoKICBwb3J0czoKICAgIC0gbmFtZTogZ3JwYwogICAgICBwb3J0OiA1MDA1MQogICAgICBwcm90b2NvbDogVENQCiAgICAgIHRhcmdldFBvcnQ6IDUwMDUxCiAgICAtIG5hbWU6IGh0dHAtZGVidWcKICAgICAgcG9ydDogMzAwMAogICAgICBwcm90b2NvbDogVENQCiAgICAgIHRhcmdldFBvcnQ6IDMwMDAKICBzZWxlY3RvcjoKICAgIGFwcDoge3sgLlNlcnZpY2UuTmFtZSB9fQogIHNlc3Npb25BZmZpbml0eTogTm9uZQogIHR5cGU6IENsdXN0ZXJJUAo=\"")
packr.PackJSONBytes("./templates", "logging_middleware.tpl", "\"cGFja2FnZSBtaWRkbGV3YXJlCgppbXBvcnQgKAogICAgImNvbnRleHQiCiAgICAidGltZSIKCiAgICAiZ2l0aHViLmNvbS9nby1nb2Rpbi9sb2ciCglncnBjX21ldGFkYXRhICJnaXRodWIuY29tL2dvLWdvZGluL2dycGMtbWV0YWRhdGEiCgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlL2VuZHBvaW50IgopCgp0eXBlIGxvZ2dpbmdNaWRkbGV3YXJlIHN0cnVjdCB7CiAgICBuZXh0IHNlcnZpY2Uue3sgdGl0bGUgLlNlcnZpY2UuTmFtZSB9fQogICAgbG9nZ2VyIGxvZy5Mb2dnZXIKfQoKLy8gTG9nZ2luZ01pZGRsZXdhcmUgbG9ncyBldmVyeSByZXF1ZXN0IGFuZCByZXNwb25zZSBvZiB0aGUgc2VydmljZS4KZnVuYyBMb2dnaW5nTWlkZGxld2FyZShsb2dnZXIgbG9nLkxvZ2dlcikgTWlkZGxld2FyZSB7CiAgICByZXR1cm4gZnVuYyhuZXh0IHNlcnZpY2Uue3sgdGl0bGUgLlNlcnZpY2UuTmFtZSB9fSkgc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19IHsKICAgICAgICByZXR1cm4gJmxvZ2dpbmdNaWRkbGV3YXJle25leHQsIGxvZ2dlcn0KICAgIH0KfQoKe3sgcmFuZ2UgLlNlcnZpY2UuTWV0aG9kcyB9fQp7eyB0ZW1wbGF0ZSAibG9nZ2luZ19tZXRob2QiIC4gfX0Ke3sgZW5kIH19Cg==\"")
packr.PackJSONBytes("./templates", "makefile.tpl", "\"R09CQVNFPSQoc2hlbGwgcHdkKQpHT0JJTj0kKEdPQkFTRSkvYmluCkdPRElSUyA9ICQoc2hlbGwgZ28gbGlzdCAtZiAne3suRGlyfX0nIC4vLi4uKQpDT01NSVQ9JChzaGVsbCBnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCkKR09GSUxFUz0kKHNoZWxsIGdvIGxpc3QgLWYge3suRGlyfX0gLi8uLi4gfCBncmVwIC12IC92ZW5kb3IvKQoKRE9DS0VSX0lNQUdFPSI8PCAuRG9ja2VyLlJlZ2lzdHJ5ID4+Lzw8IC5TZXJ2aWNlLk5hbWVzcGFjZSA+Pi08PCAuU2VydmljZS5OYW1lID4+IgpET0NLRVJfVEFHPSJ2LSR7Q09NTUlUfS1kZXYiClBST1RPX1NSQz0iPDwgLlByb3RvYnVmLlBhdGggPj4iCgouUEhPTlk6IGJ1aWxkCmJ1aWxkOiBjaGVjayB2ZW5kb3IKCUBlY2hvICItLT4gYnVpbGRpbmciCglAZ28gYnVpbGQgLW8gJHtHT0JJTn0vPDwgLlNlcnZpY2UuTmFtZSA+PiAuL2NtZC88PCAuU2VydmljZS5OYW1lID4+LyouZ28KCi5QSE9OWTogcnVuCnJ1bjoKCUBlY2hvICItLT4gc3RhcnRpbmcgbG9jYWxseSIKCUBMT0dfTEVWRUw9ZGVidWcgZ28gcnVuIGNtZC88PCAuU2VydmljZS5OYW1lID4+LyouZ28KCi5QSE9OWTogdmVuZG9yCnZlbmRvcjoKCUBlY2hvICItLT4gdmVuZG9yaW5nIGRlcGVuZGVuY2llcyIKCUBnbyBtb2QgdmVuZG9yCgouUEhPTlk6IGdycGN1aQpncnBjdWk6CglAZ3JwY3VpIC1wcm90byAke1BST1RPX1NSQ30gLXBvcnQgNTAwMCAtcGxhaW50ZXh0IGxvY2FsaG9zdDo1MDA1MQoKLlBIT05ZOiBjbGVhbgpjbGVhbjoKCUBlY2hvICItLT4gY2xlYW5pbmcgdXAgYmluYXJpZXMiCglAZ28gY2xlYW4gLXRhZ3MgbmV0Z28gLWkgLi8uLi4KCUBybSAtcmYgJChHT0JJTikvKgoKLlBIT05ZOiBkb2NrZXIKZG9ja2VyOiBjaGVjayB2ZW5kb3IKCUBlY2hvICItLT4gYnVpbGRpbmcgZG9ja2VyIGltYWdlIgoJZG9ja2VyIGJ1aWxkIC4gLXQgJHtET0NLRVJfSU1BR0V9OiR7RE9DS0VSX1RBR30gLWYgLi9Eb2NrZXJmaWxlCgouUEhPTlk6IGRvY2tlci1ydW4KZG9ja2VyLXJ1bjoKCUBlY2hvICItLT4gc3RhcnRpbmcgY29udGFpbmVyICR7RE9DS0VSX0lNQUdFfToke0RPQ0tFUl9UQUd9IgoJQGRvY2tlciBydW4gXAoJCS0tcm0gXAoJCS0tbmFtZSA8PCAuU2VydmljZS5OYW1lID4+IFwKCQktLW5ldHdvcmsgaG9zdCBcCgkJJHtET0NLRVJfSU1BR0V9OiR7RE9DS0VSX1RBR30KCi5QSE9OWTogY2hlY2sKY2hlY2s6IGZvcm1hdC5jaGVjayBsaW50CgouUEhPTlk6IGZvcm1hdC5jaGVjawpmb3JtYXQuY2hlY2s6IHRvb2xzLmdvaW1wb3J0cwoKCQlAZWNobyAiLS0+IGNoZWNraW5nIGNvZGUgZm9ybWF0dGluZyB3aXRoICdnb2ltcG9ydHMnIgoJCUBnb2ltcG9ydHMgLXcgJHtHT0ZJTEVTfQoKCi5QSE9OWTogbGludApsaW50OiB0b29scy5nb2xpbnQKCUBlY2hvICItLT4gY2hlY2tpbmcgY29kZSBzdHlsZSB3aXRoICdnb2xpbnQnIgoJQGVjaG8gJChHT0RJUlMpIHwgeGFyZ3MgLW4gMSBnb2xpbnQKCiMtLS0tLS0tLS0tLS0tLS0KIy0tIHRvb2xzCiMtLS0tLS0tLS0tLS0tLS0KLlBIT05ZOiB0b29scyB0b29scy5nb2ltcG9ydHMgdG9vbHMuZ29saW50IHRvb2xzLmdvdmV0Cgp0b29sczogdG9vbHMuZ29pbXBvcnRzIHRvb2xzLmdvbGludCB0b29scy5nb3ZldAoKdG9vbHMuZ29pbXBvcnRzOgoJQGNvbW1hbmQgLXYgZ29pbXBvcnRzID4vZGV2L251bGwgOyBpZiBbICQkPyAtbmUgMCBdOyB0aGVuIFwKCQllY2hvICItLT4gaW5zdGFsbGluZyBnb2ltcG9ydHMiOyBcCgkJZ28gZ2V0IGdvbGFuZy5vcmcveC90b29scy9jbWQvZ29pbXBvcnRzOyBcCglmaQoKdG9vbHMuZ292ZXQ6CglAZ28gdG9vbCB2ZXQgMj4vZGV2L251bGwgOyBpZiBbICQkPyAtZXEgMyBdOyB0aGVuIFwKCQllY2hvICItLT4gaW5zdGFsbGluZyBnb3ZldCI7IFwKCQlnbyBnZXQgZ29sYW5nLm9yZy94L3Rvb2xzL2NtZC92ZXQ7IFwKCWZpCgp0b29scy5nb2xpbnQ6CglAY29tbWFuZCAtdiBnb2xpbnQgPi9kZXYvbnVsbCA7IGlmIFsgJCQ/IC1uZSAwIF07IHRoZW4gXAoJCWVjaG8gIi0tPiBpbnN0YWxsaW5nIGdvbGludCI7IFwKCQlnbyBnZXQgLXUgZ29sYW5nLm9yZy94L2xpbnQvZ29saW50OyBcCglmaQo=\"")
packr.PackJSONBytes("./templates", "middleware.tpl", "\"cGFja2FnZSBtaWRkbGV3YXJlCgppbXBvcnQgKAogICAgInt7IC5TZXJ2aWNlLk1vZHVsZSB9fS9pbnRlcm5hbC9zZXJ2aWNlIgopCgovLyBNaWRkbGV3YXJlIGRlZmluZXMgdGhlIHNlcnZpY2Utc3BlY2lmaWMgbWlkZGxld2FyZSB0eXBlCnR5cGUgTWlkZGxld2FyZSBmdW5jKHNlcnZpY2Ugc2VydmljZS57eyB0aXRsZSAuU2VydmljZS5OYW1lIH19KSBzZXJ2aWNlLnt7IHRpdGxlIC5TZXJ2aWNlLk5hbWUgfX0K\"")
packr.PackJSONBytes("./templates", "middleware_logging.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgbWlkZGxld2FyZQoKaW1wb3J0ICgKICAgICJjb250ZXh0IgogICAgInRpbWUiCgogICAgImdpdGh1Yi5jb20vZ28ta2l0L2tpdC9sb2ciCglncnBjX21ldGFkYXRhICJnaXRodWIuY29tL2dvLWdvZGluL2dycGMtbWV0YWRhdGEiCgogICAgc2VydmljZSAie3sgLlNlcnZpY2UuSW1wb3J0UGF0aCB9fSIKKQoKdHlwZSBsb2dnaW5nTWlkZGxld2FyZSBzdHJ1Y3QgewogICAgbG9nZ2VyIGxvZy5Mb2dnZXIKICAgIG5leHQgc2VydmljZS57eyAuU2VydmljZS5OYW1lIH19Cn0KCmZ1bmMgTmV3TG9nZ2luZ01pZGRsZXdhcmUobG9nZ2VyIGxvZy5Mb2dnZXIpIE1pZGRsZXdhcmUgewogICAgcmV0dXJuIGZ1bmMobmV4dCBzZXJ2aWNlLnt7IC5TZXJ2aWNlLk5hbWUgfX0pIHNlcnZpY2Uue3sgLlNlcnZpY2UuTmFtZSB9fSB7CiAgICAgICAgcmV0dXJuICZsb2dnaW5nTWlkZGxld2FyZXtsb2dnZXIsIG5leHR9CiAgICB9Cn0KCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KZnVuYyAobCBsb2dnaW5nTWlkZGxld2FyZSkge3sgLk5hbWUgfX0oe3sgLlBhcmFtTGlzdCB9fSkgKHt7IC5SZXR1cm5MaXN0IH19KSB7Cn0Ke3stIGVuZCB9fQ==\"")
packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/publish_encode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9wdWJsaXNoX2VuY29kZSIgfX0KLy8ge3sgLk5hbWUgfX1FbmNvZGVyIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBwdWJsaXNoaW5nIGFuIGV2ZW50IHRvICd7eyAuUHVibGlzaGluZy5Ub3BpYyB9fScgYW5kIGVuY29kZXMKLy8gdGhlIERBTyB0byBwcm90b2J1Zi4gR29kaW4gZG9lc24ndCBrbm93IHdoYXQgeW91IHdpbGwgcGFzcyB0byB0aGlzIGZ1bmN0aW9uLCBzbyBlbnN1cmUgdGhhdCB5b3UKLy8gdXNlIGEgcnVudGltZS1hc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQgeW91J3ZlIGdvdCB0aGUgY29ycmVjdCB0eXBlLgpmdW5jIHt7IC5OYW1lIH19RW5jb2RlcihldmVudCBpbnRlcmZhY2V7fSkgKCpwYi57eyAuUHVibGlzaGluZy5Qcm90b2J1Zk1lc3NhZ2UgfX0sIGVycm9yKSB7CnZhciBlbmNvZGVkIHBiLnt7IC5QdWJsaXNoaW5nLlByb3RvYnVmTWVzc2FnZSB9fQoKLy8gVE9ETzogbWFwIHRvIHByb3RvYnVmCgpyZXR1cm4gJmVuY29kZWQsIG5pbAp9Cnt7LSBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decode.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2RlIiB9fQovLyB7eyAuSGFuZGxlciB9fURlY29kZXIgd2lsbCB1bm1hcnNoYWwgdGhlIEJvZHkgb2YgdGhlIGluY29taW5nIERlbGl2ZXJ5IGludG8gYSBwcm90b2J1ZiBtZXNzYWdlLgovLwovLyBOb3RlOiBHb2RpbiB3aWxsIG5vdCByZWdlbmVyYXRlIHRoaXMgZmlsZSwgb25seSBhcHBlbmQgbmV3IGZ1bmN0aW9ucy4gU28gaWYgdGhpcyBmaWxlIHdhcyBhbHJlYWR5IHByZXNlbnQgd2hlbgovLyB5b3UgYWRkZWQgdGhlIHN1YnNjcmliZXIsIHlvdSBuZWVkIHRvIGZpeCB0aGUgaW1wb3J0cyBieSBhZGRpbmc6Ci8vCSB7eyB1bnRpdGxlIC5IYW5kbGVyIH19UHJvdG8gInt7IC5Qcm90b2J1Zi5JbXBvcnQgfX0iCmZ1bmMge3sgLkhhbmRsZXIgfX1EZWNvZGVyKGRlbGl2ZXJ5ICpyYWJiaXRtcS5EZWxpdmVyeSkgKGRlY29kZWQgaW50ZXJmYWNle30sIGVyciBlcnJvcikgewoJZXZlbnQgOj0gJnt7IHVudGl0bGUgLkhhbmRsZXIgfX1Qcm90by57eyAuUHJvdG9idWYuTWVzc2FnZSB9fXt9CgoJaWYgZXJyIDo9IHByb3RvLlVubWFyc2hhbChkZWxpdmVyeS5Cb2R5LCBldmVudCk7IGVyciAhPSBuaWwgewoJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImZhaWxlZCB0byB1bm1hcnNoYWwgRGVsaXZlcnkgaW50byAqe3sgdW50aXRsZSAuSGFuZGxlciB9fVByb3RvLnt7IC5Qcm90b2J1Zi5NZXNzYWdlIH19OiAlcyIsIGVycikKCX0KCglyZXR1cm4gZXZlbnQsIG5pbAp9Cnt7LSBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "partials/amqp/encode_decode/subscribe_decoder_interfaces.tpl", "\"e3stIGRlZmluZSAiYW1xcF9zdWJzY3JpYmVfZGVjb2Rlcl9pbnRlcmZhY2UiIH19Cnt7LSBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "partials/endpoint.tpl", "\"e3stIGRlZmluZSAiZW5kcG9pbnQiIH19Ci8vIHt7IC5OYW1lIH19RW5kcG9pbnQgcHJvdmlkZXMgc2VydmljZS57eyAuTmFtZSB9fSgpIGFzIGdlbmVyYWwgZW5kcG9pbnQKLy8gd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBhcmJpdHJhcnkgdHJhbnNwb3J0IGxheWVycy4KZnVuYyB7eyAuTmFtZSB9fUVuZHBvaW50KHNlcnZpY2Ugc2VydmljZS57eyB0aXRsZSAuU2VydmljZU5hbWUgfX0pIGVuZHBvaW50LkVuZHBvaW50IHsKICAgIHJldHVybiBmdW5jIChjdHggY29udGV4dC5Db250ZXh0LCByZXF1ZXN0IGludGVyZmFjZXt9KSAoaW50ZXJmYWNle30sIGVycm9yKSB7CiAgICAgICAgcmVxIDo9IHJlcXVlc3QuKHt7IC5SZXF1ZXN0TmFtZSB9fSkKICAgICAgICBfID0gcmVxIC8vIGJ5cGFzcyAiZGVjbGFyZWQgYW5kIG5vdCB1c2VkIiBjb21waWxlciBlcnJvciBpZiB0aGUgcmVxdWVzdCBpcyBlbXB0eSBhbmQgbm90IHVzZWQKICAgICAgICB7eyAuUmV0dXJuVmFyaWFibGVMaXN0IH19IDo9IHNlcnZpY2Uue3sgLk5hbWUgfX0oCiAgICAgICAgICAgIHt7LSByYW5nZSAuUGFyYW1zIH19CiAgICAgICAgICAgICAgICB7ey0gaWYgZXEgLk5hbWUgImN0eCIgfX0KICAgICAgICAgICAgICAgICAgICB7ey0gLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZWxzZSAtfX0KICAgICAgICAgICAgICAgICAgICByZXEue3sgdGl0bGUgLk5hbWUgfX0sCiAgICAgICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgICAgIHt7LSBlbmQgfX0pCgogICAgICAgIHJldHVybiB7eyAuUmVzcG9uc2VOYW1lIH19ewogICAgICAgICAgICB7ey0gcmFuZ2UgLlJldHVybnMgfX0KICAgICAgICAgICAge3sgdGl0bGUgLk5hbWUgfX06IHt7IC5OYW1lIH19LAogICAgICAgICAgICB7ey0gZW5kIH19CiAgICAgICAgfSwgZXJyCiAgICB9Cn0Ke3stIGVuZCB9fQo=\"")
packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/request_decoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3JlcXVlc3RfZGVjb2RlciIgfX0KLy8ge3sgLlJlcXVlc3QgfX1EZWNvZGVyIG1hcHMgdGhlIHByb3RvYnVmIHJlcXVlc3Qgb2YgdGhlIGdSUEMgdHJhbnNwb3J0IGxheWVyIG9udG8gdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVxdWVzdCB9fQpmdW5jIHt7IC5SZXF1ZXN0IH19RGVjb2RlcihwYlJlcXVlc3QgKnBiLnt7IC5Qcm90b2J1ZlJlcXVlc3QgfX0pIChyZXF1ZXN0IGVuZHBvaW50Lnt7IC5SZXF1ZXN0IH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncGJSZXF1ZXN0JyB0byAncmVxdWVzdCcgYW5kIHJldHVybgogICAgcmV0dXJuIHJlcXVlc3QsIGVycgp9Cnt7IGVuZCB9fQo=\"")
packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/request_encoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3JlcXVlc3RfZW5jb2RlciIgfX0KLy8ge3sgLlJlcXVlc3QgfX1FbmNvZGVyIGVuY29kZXMgdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVxdWVzdCB9fSBpbnRvIGEgcHJvdG9idWYge3sgLlByb3RvYnVmUmVxdWVzdCB9fQpmdW5jIHt7IC5SZXF1ZXN0IH19RW5jb2RlcihyZXF1ZXN0IGVuZHBvaW50Lnt7IC5SZXF1ZXN0IH19KSAocGJSZXF1ZXN0ICpwYi57eyAuUHJvdG9idWZSZXF1ZXN0IH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncmVxdWVzdCcgdG8gJ3BiUmVxdWVzdCcgYW5kIHJldHVybgogICAgcmV0dXJuIHBiUmVxdWVzdCwgZXJyCn0Ke3sgZW5kIH19\"")
packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/response_decoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3Jlc3BvbnNlX2RlY29kZXIiIH19Ci8vIHt7IC5SZXNwb25zZSB9fURlY29kZXIgbWFwcyB0aGUgcHJvdG9idWYgcmVzcG9uc2Ugb2YgdGhlIGdSUEMgdHJhbnNwb3J0IGxheWVyIG9udG8gdGhlIGRvbWFpbi1sZXZlbCB7eyAuUmVzcG9uc2UgfX0KZnVuYyB7eyAuUmVzcG9uc2UgfX1EZWNvZGVyKHBiUmVzcG9uc2UgKnBiLnt7IC5Qcm90b2J1ZlJlc3BvbnNlIH19KSAocmVzcG9uc2UgZW5kcG9pbnQue3sgLlJlc3BvbnNlIH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncGJSZXNwb25zZScgdG8gJ3Jlc3BvbnNlJyBhbmQgcmV0dXJuCiAgICByZXR1cm4gcmVzcG9uc2UsIGVycgp9Cnt7IGVuZCB9fQo=\"")
packr.PackJSONBytes("./templates", "partials/grpc/encode_decode/response_encoder.tpl", "\"e3sgZGVmaW5lICJncnBjX3Jlc3BvbnNlX2VuY29kZXIiIH19Ci8vIHt7IC5SZXNwb25zZSB9fUVuY29kZXIgZW5jb2RlcyB0aGUgZG9tYWluLWxldmVsIHt7IC5SZXNwb25zZSB9fSBpbnRvIGEgcHJvdG9idWYge3sgLlByb3RvYnVmUmVzcG9uc2UgfX0KZnVuYyB7eyAuUmVzcG9uc2UgfX1FbmNvZGVyKHJlc3BvbnNlIGVuZHBvaW50Lnt7IC5SZXNwb25zZSB9fSkgKHBiUmVzcG9uc2UgKnBiLnt7IC5Qcm90b2J1ZlJlc3BvbnNlIH19LCBlcnIgZXJyb3IpIHsKICAgIC8vIFRPRE86IG1hcCAncmVzcG9uc2UnIHRvICdwYlJlc3BvbnNlJyBhbmQgcmV0dXJuCiAgICByZXR1cm4gcGJSZXNwb25zZSwgZXJyCn0Ke3sgZW5kIH19Cg==\"")
packr.PackJSONBytes("./templates", "partials/grpc/request_response/decode_request.tpl", "\"e3sgZGVmaW5lICJncnBjX2RlY29kZV9yZXF1ZXN0IiB9fQovLyBEZWNvZGV7eyAuUmVxdWVzdCB9fSBpcyB1c2VkIGluIHRoZSBjbGllbnQgYW5kIGRlY29kZXMgYSBnUlBDIHJlcXVlc3QgaW50byBhIGRvbWFpbi1sZXZlbCByZXF1ZXN0CmZ1bmMgRGVjb2Rle3sgLlJlcXVlc3QgfX0oY3R4IGNvbnRleHQuQ29udGV4dCwgcGJSZXF1ZXN0IGludGVyZmFjZXt9KSAocmVxdWVzdCBpbnRlcmZhY2V7fSwgZXJyIGVycm9yKSB7CiAgICBpZiBwYlJlcXVlc3QgPT0gbmlsIHsKICAgICAgICByZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJuaWwge3sgLlJlcXVlc3QgfX0iKQogICAgfQogICAgcmVxIDo9IHBiUmVxdWVzdC4oKnBiLnt7IC5Qcm90b2J1ZlJlcXVlc3QgfX0pCiAgICByZXF1ZXN0LCBlcnIgPSB7eyAuUmVxdWVzdCB9fURlY29kZXIocmVxKQogICAgaWYgZXJyICE9IG5pbCB7CiAgICAgICAgcmV0dXJuIG5pbCwgZXJyCiAgICB9CiAgICByZXR1cm4gcmVxdWVzdCwgbmlsCn0Ke3sgZW5kIH19\"")
packr.PackJSONBytes("./templates", "partials/grpc/request_response/decode_response.tpl", "\"e3sgZGVmaW5lICJncnBjX2RlY29kZV9yZXNwb25zZSIgfX0KLy8gRGVjb2Rle3sgLlJlc3BvbnNlIH19IGlzIHVzZWQgaW4gdGhlIHNlcnZlciBhbmQgZGVjb2RlcyBhIGdSUEMgcmVzcG9uc2UgaW50byBhIGRvbWFpbi1sZXZlbCByZXNwb25zZQpmdW5jIERlY29kZXt7IC5SZXNwb25zZSB9fShjdHggY29udGV4dC5Db250ZXh0LCBwYlJlc3BvbnNlIGludGVyZmFjZXt9KSAocmVzcG9uc2UgaW50ZXJmYWNle30sIGVyciBlcnJvcikgewogICAgaWYgcGJSZXNwb25zZSA9PSBuaWwgewogICAgICAgIHJldHVybiBuaWwsIGVycm9ycy5OZXcoIm5pbCB7eyAuUmVzcG9uc2UgfX0iKQogICAgfQogICAgcmVzIDo9IHBiUmVzcG9uc2UuKCpwYi57eyAuUHJvdG9idWZSZXNwb25zZSB9fSkKICAgIHJlc3BvbnNlLCBlcnIgPSB7eyAuUmVzcG9uc2UgfX1EZWNvZGVyKHJlcykKICAgIGlmIGVyciAhPSBuaWwgewogICAgICAgIHJldHVybiBuaWwsIGVycgogICAgfQogICAgcmV0dXJuIHJlc3BvbnNlLCBuaWwKfQp7eyBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "partials/grpc/request_response/encode_request.tpl", "\"e3sgZGVmaW5lICJncnBjX2VuY29kZV9yZXF1ZXN0IiB9fQovLyBFbmNvZGV7eyAuUmVxdWVzdCB9fSBpcyB1c2VkIGluIHRoZSBzZXJ2ZXIgYW5kIGVuY29kZXMgYSBkb21haW4tbGV2ZWwgcmVxdWVzdCBpbnRvIGEgZ1JQQyByZXF1ZXN0CmZ1bmMgRW5jb2Rle3sgLlJlcXVlc3QgfX0oY3R4IGNvbnRleHQuQ29udGV4dCwgcmVxdWVzdCBpbnRlcmZhY2V7fSkgKHBiUmVxdWVzdCBpbnRlcmZhY2V7fSwgZXJyIGVycm9yKSB7CiAgICBpZiByZXF1ZXN0ID09IG5pbCB7CiAgICAgICAgcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygibmlsIHt7IC5SZXF1ZXN0IH19IikKICAgIH0KICAgIHJlcSA6PSByZXF1ZXN0LihlbmRwb2ludC57eyAuUmVxdWVzdCB9fSkKICAgIHBiUmVxdWVzdCwgZXJyID0ge3sgLlJlcXVlc3QgfX1FbmNvZGVyKHJlcSkKICAgIGlmIGVyciAhPSBuaWwgewogICAgICAgIHJldHVybiBuaWwsIGVycgogICAgfQogICAgcmV0dXJuIHBiUmVxdWVzdCwgbmlsCn0Ke3sgZW5kIH19Cg==\"")
packr.PackJSONBytes("./templates", "partials/grpc/request_response/encode_response.tpl", "\"e3sgZGVmaW5lICJncnBjX2VuY29kZV9yZXNwb25zZSIgfX0KLy8gRW5jb2Rle3sgLlJlc3BvbnNlIH19IGlzIHVzZWQgaW4gdGhlIGNsaWVudCBhbmQgZW5jb2RlcyBhIGRvbWFpbi1sZXZlbCByZXNwb25zZSBpbnRvIGEgZ1JQQyByZXNwb25zZQpmdW5jIEVuY29kZXt7IC5SZXNwb25zZSB9fShjdHggY29udGV4dC5Db250ZXh0LCByZXNwb25zZSBpbnRlcmZhY2V7fSkgKHBiUmVzcG9uc2UgaW50ZXJmYWNle30sIGVyciBlcnJvcikgewogICAgaWYgcmVzcG9uc2UgPT0gbmlsIHsKICAgICAgICByZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJuaWwge3sgLlJlc3BvbnNlIH19IikKICAgIH0KICAgIHJlcyA6PSByZXNwb25zZS4oZW5kcG9pbnQue3sgLlJlc3BvbnNlIH19KQogICAgcGJSZXNwb25zZSwgZXJyID0ge3sgLlJlc3BvbnNlIH19RW5jb2RlcihyZXMpCiAgICBpZiBlcnIgIT0gbmlsIHsKICAgICAgICByZXR1cm4gbmlsLCBlcnIKICAgIH0KICAgIHJldHVybiBwYlJlc3BvbnNlLCBuaWwKfQp7eyBlbmQgfX0K\"")
packr.PackJSONBytes("./templates", "partials/logging_method.tpl", "\"e3sgZGVmaW5lICJsb2dnaW5nX21ldGhvZCIgfX0KLy8ge3sgLk5hbWUgfX0gbG9ncyB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2YgdGhlIHNlcnZpY2Uue3sgLk5hbWUgfX0gZW5kcG9pbnQKLy8gVGhlIHJ1bnRpbWUgd2lsbCBhbHNvIGJlIGxvZ2dlZC4gT25jZSBhIHJlcXVlc3QgZW50ZXJzIHRoaXMgbWlkZGxld2FyZSwgdGhlIHRpbWVyIGlzIHN0YXJ0ZWQuCi8vIFVwb24gbGVhdmluZyB0aGlzIG1pZGRsZXdhcmUgKGRlZmVycmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCksIHRoZSB0aW1lLWRlbHRhIGlzIGNhbGN1bGF0ZWQuCmZ1bmMgKGwgbG9nZ2luZ01pZGRsZXdhcmUpIHt7IC5OYW1lIH19KHt7IC5QYXJhbUxpc3QgfX0pICh7eyAuUmV0dXJuTGlzdCB9fSkgewoJbC5sb2dnZXIuTG9nKAoJICAgICJlbmRwb2ludCIsICJ7eyAuTmFtZSB9fSIsCgkJInJlcXVlc3QuaWQiLCBncnBjX21ldGFkYXRhLkdldFJlcXVlc3RJRChjdHgpLAoJICAgICJyZXF1ZXN0LmRhdGEiLCBlbmRwb2ludC57eyAuUmVxdWVzdE5hbWUgfX17CgkgICAge3stIHJhbmdlIC5QYXJhbXMgfX0KCSAgICAgICAge3stIGlmIG5lIC5OYW1lICJjdHgiIH19IHt7IHRpdGxlIC5OYW1lIH19OiB7eyAuTmFtZSB9fSwge3tlbmR9fQogICAgICAgIHt7IGVuZCB9fQoJICAgIH0sCgkgICAgKQoKCWRlZmVyIGZ1bmMoYmVnaW4gdGltZS5UaW1lKSB7CgkgICAgcmVzcCA6PSBlbmRwb2ludC57eyAuUmVzcG9uc2VOYW1lIH19ewogICAgICAgICAgICB7ey0gcmFuZ2UgLlJldHVybnMgfX0KICAgICAgICAgICAgICAgIHt7LSBpZiBuZSAuVHlwZSAiZXJyb3IiIH19CiAgICAgICAgICAgICAgICAgICAge3stIHRpdGxlIC5OYW1lIH19OiB7eyAuTmFtZSB9fSwKICAgICAgICAgICAgICAgIHt7LSBlbmQgfX0KICAgICAgICAgICAge3stIGVuZCB9fQoJICAgIH0KCiAgICAgICAgbC5sb2dnZXIuTG9nKAogICAgICAgICAgICAiZW5kcG9pbnQiLCAie3sgLk5hbWUgfX0iLAoJCSAgICAicmVxdWVzdC5pZCIsIGdycGNfbWV0YWRhdGEuR2V0UmVxdWVzdElEKGN0eCksCiAgICAgICAgICAgICJyZXNwb25zZS5kYXRhIiwgcmVzcCwKICAgICAgICAgICAgImVycm9yIiwgZXJyLAogICAgICAgICAgICAic3VjY2VzcyIsIGVyciA9PSBuaWwsCiAgICAgICAgICAgICJ0b29rIiwgdGltZS5TaW5jZShiZWdpbiksCiAgICAgICAgKQoJfSh0aW1lLk5vdygpKQoKCXJldHVybiBsLm5leHQue3sgLk5hbWUgfX0oe3sgcmFuZ2UgLlBhcmFtcyB9fXt7IC5OYW1lIH19LCB7eyBlbmQgfX0pCn0Ke3sgZW5kIH19\"")
packr.PackJSONBytes("./templates", "partials/request.tpl", "\"e3sgZGVmaW5lICJyZXF1ZXN0IiB9fQp7eyAuUmVxdWVzdCB9fSBzdHJ1Y3QgewogICAge3stIHJhbmdlIC5QYXJhbXMgfX0KICAgICAgICB7ey0gaWYgbmUgLk5hbWUgImN0eCIgfX0KICAgICAgICB7eyB0aXRsZSAuTmFtZSB9fSB7eyAuVHlwZSB9fSBganNvbjoie3sgLk5hbWUgfX0iYAogICAgICAgIHt7LSBlbmQgfX0KICAgIHt7LSBlbmQgfX0KfQp7eyBlbmQgfX0=\"")
packr.PackJSONBytes("./templates", "partials/response.tpl", "\"e3sgZGVmaW5lICJyZXNwb25zZSIgfX0Ke3sgLlJlc3BvbnNlIH19IHN0cnVjdCB7CiAgICB7ey0gcmFuZ2UgLlJldHVybnMgfX0KICAgIHt7LSBpZiBlcSAuVHlwZSAiZXJyb3IiIH19CiAgICAgICAge3sgdGl0bGUgLk5hbWUgfX0ge3sgLlR5cGUgfX0gYGpzb246Ii0iYAogICAge3stIGVsc2UgfX0KICAgICAgICB7eyB0aXRsZSAuTmFtZSB9fSB7eyAuUmVzb2x2ZVR5cGUgfX0gYGpzb246Int7IC5OYW1lIH19ImAKICAgIHt7LSBlbmQgfX0KICAgIHt7LSBlbmQgfX0KfQp7eyBlbmQgfX0=\"")
packr.PackJSONBytes("./templates", "partials/service_method.tpl", "\"e3sgZGVmaW5lICJzZXJ2aWNlX21ldGhvZCIgfX0Ke3stIHJhbmdlIC5Db21tZW50cyB9fQp7eyAuIH19Cnt7LSBlbmQgfX0KZnVuYyAodWMgKlVzZUNhc2UpIHt7IC5OYW1lIH19KCB7eyAuUGFyYW1MaXN0IH19KSAoe3sgLlJldHVybkxpc3QgfX0pIHsKICAgIHJldHVybiB7eyAuUmV0dXJuSW1wbGVtZW50YXRpb25NaXNzaW5nIH19Cn0Ke3sgZW5kIH19\"")
packr.PackJSONBytes("./templates", "readme.tpl", "\"IyBbe3sgLlNlcnZpY2UuTmFtZXNwYWNlIH19XSB7eyAuU2VydmljZS5OYW1lIH19Cj4gUG93ZXJlZCBieSBHb2RpbiB7eyAuR29kaW4uVmVyc2lvbiB9fSAoe3sgLkdvZGluLkNvbW1pdCB9fSkKCiogKipHb2RpbiBpbml0OioqIHt7IC5Qcm9qZWN0LkNyZWF0ZWQgfX0KKiAqKkxhc3QgZ29kaW4gdXBkYXRlIDoqKiB7eyAuUHJvamVjdC5VcGRhdGVkIH19CgojIyBnUlBDIHNlcnZpY2U6IHt7IC5Qcm90b2J1Zi5TZXJ2aWNlIH19Cnt7LSByYW5nZSAuU2VydmljZS5NZXRob2RzIH19Cioqe3sgLk5hbWUgfX0qKgp7eyByYW5nZSAuQ29tbWVudHMgfX0KKnt7IHJlcGxhY2UgIi8vICIgIiIgLiB9fSoKe3stIGVuZCB9fQpgYGBnbwpmdW5jIHt7IC5OYW1lIH19KHt7IC5QYXJhbUxpc3QgfX0pICh7eyAuUmV0dXJuTGlzdCB9fSkKYGBgCnt7LSBlbmQgfX0KCnt7LSBpZiAuU2VydmljZS5UcmFuc3BvcnQuQU1RUCB9fQojIyBBTVFQIHN1YnNjcmlwdGlvbnMKCkFsbCBoYW5kbGVycyBhcmUgbG9jYXRlZCBpbjogYC4vaW50ZXJuYWwvc2VydmljZS9zdWJzY3JpYmVyL2AKRWFjaCBoYW5kbGVyIGhhcyBpdCdzIG93biBmaWxlLCBuYW1lZCBhZnRlciB0aGUgc3Vic2NyaXB0aW9uIHRvcGljLgoKfCAqKlJvdXRpbmcga2V5KiogfCAqKkV4Y2hhbmdlKiogfCAqKlF1ZXVlKiogfCAqKkhhbmRsZXIqKiB8ICoqUHJlZmV0Y2ggQ291bnQqKiB8CnwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAp7ey0gcmFuZ2UgLlNlcnZpY2UuU3Vic2NyaWJlciB9fQp8IHt7IC5TdWJzY3JpcHRpb24uVG9waWMgfX0gfCB7eyAuU3Vic2NyaXB0aW9uLkV4Y2hhbmdlIH19IHwge3sgLlN1YnNjcmlwdGlvbi5RdWV1ZS5OYW1lIH19IHwge3sgLkhhbmRsZXIgfX0gfCB7eyAuU3Vic2NyaXB0aW9uLlByZWZldGNoQ291bnQgfX18Cnt7LSBlbmQgfX0Ke3stIGVuZCB9fQoKIyMgVHJhbnNwb3J0IE9wdGlvbnMKfCAqKk9wdGlvbioqICAgICAgfCAqKkVuYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBnUlBDIFRyYW5zcG9ydCBsYXllciB8IHt7IFJlYWRtZU9wdGlvbkNoZWNrYm94ICJ0cmFuc3BvcnQuZ3JwYy5lbmFibGVkIiB9fSB8CnwgZ1JQQyBTZXJ2ZXIgfCB7eyBSZWFkbWVPcHRpb25DaGVja2JveCAidHJhbnNwb3J0LmdycGMuc2VydmVyLmVuYWJsZWQiIH19IHwKfCBnUlBDIENsaWVudCB8IHt7IFJlYWRtZU9wdGlvbkNoZWNrYm94ICJ0cmFuc3BvcnQuZ3JwYy5jbGllbnQuZW5hYmxlZCIgfX0gfAp8IEFNUVAgVHJhbnNwb3J0IHwge3sgUmVhZG1lT3B0aW9uQ2hlY2tib3ggInRyYW5zcG9ydC5hbXFwLmVuYWJsZWQiIH19IHwKfCBBTVFQIFN1YnNjcmliZXIgfCB7eyBSZWFkbWVPcHRpb25DaGVja2JveCAidHJhbnNwb3J0LmFtcXAuc3Vic2NyaWJlciIgfX0gfAp8IEFNUVAgUHVibGlzaGVyIHwge3sgUmVhZG1lT3B0aW9uQ2hlY2tib3ggInRyYW5zcG9ydC5hbXFwLnB1Ymxpc2hlciIgfX0gfAoKIyMgRW5kcG9pbnQgbWlkZGxld2FyZQoKRW5kcG9pbnQgbWlkZGxld2FyZSBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IEdvZGluLiBJdCBpcyBwcm92aWRlZCBieTogW2dvLWdvZGluL21pZGRsZXdhcmVdKGdpdGh1Yi5jb20vZ28tZ29kaW4vbWlkZGxld2FyZSkKCnwgKipNaWRkbGV3YXJlKiogICAgICB8ICoqRW5hYmxlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBJbnN0cnVtZW50R1JQQyB8ICAhW2VuYWJsZWRdKGh0dHBzOi8vaW1nLmljb25zOC5jb20vY29sb3IvMjQvMDAwMDAwL2NoZWNrZWQucG5nKQp8IExvZ2dpbmcgfCAgIVtlbmFibGVkXShodHRwczovL2ltZy5pY29uczguY29tL2NvbG9yLzI0LzAwMDAwMC9jaGVja2VkLnBuZykKfCBSZXF1ZXN0SUQgfCAgIVtlbmFibGVkXShodHRwczovL2ltZy5pY29uczguY29tL2NvbG9yLzI0LzAwMDAwMC9jaGVja2VkLnBuZykKCiMjIFNlcnZpY2UgbWlkZGxld2FyZQoKU2VydmljZSBtaWRkbGV3YXJlIGlzIHVzZS1jYXNlIHNwZWNpZmljIG1pZGRsZXdhcmUgd2hpY2ggdGhlIGRldmVsb3BlciBoYXMgdG8gdGFrZSBjYXJlIG9mLgpHb2RpbiBvbmx5IGFzc2l0cyBpbiBjcmVhdGluZyBhbmQgbWFpbnRhaW5pbmcgc2VydmljZSBtaWRkbGV3YXJlLCBidXQgd2lsbCBuZXZlciBvdmVyd3JpdGUgbWlkZGxld2FyZS4KCnwgKipNaWRkbGV3YXJlKiogICAgICB8ICoqRW5hYmxlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBBdXRob3JpemF0aW9uIHwgIHt7IFJlYWRtZU9wdGlvbkNoZWNrYm94ICJzZXJ2aWNlLm1pZGRsZXdhcmUuYXV0aG9yaXphdGlvbiIgfX0KfCBDYWNoaW5nIHwgIHt7IFJlYWRtZU9wdGlvbkNoZWNrYm94ICJzZXJ2aWNlLm1pZGRsZXdhcmUuY2FjaGluZyIgfX0KfCBMb2dnaW5nIHwgIHt7IFJlYWRtZU9wdGlvbkNoZWNrYm94ICJzZXJ2aWNlLm1pZGRsZXdhcmUubG9nZ2luZyIgfX0KfCBSZWNvdmVyeSB8ICB7eyBSZWFkbWVPcHRpb25DaGVja2JveCAic2VydmljZS5taWRkbGV3YXJlLnJlY292ZXJ5IiB9fQp8IE1vbml0b3JpbmcgfCAge3sgUmVhZG1lT3B0aW9uQ2hlY2tib3ggInNlcnZpY2UubWlkZGxld2FyZS5tb25pdG9yaW5nIiB9fQoKe3stIGlmIC5TZXJ2aWNlLlRyYW5zcG9ydC5BTVFQIH19CiMjIFN1YnNjcmlwdGlvbiBtaWRkbGV3YXJlCgpTdWJzY3JpcHRpb24gbWlkZGxld2FyZSBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IEdvZGluLiBJdCBpcyBwcm92aWRlZCBieTogW2dvLWdvZGluL21pZGRsZXdhcmUvYW1xcF0oZ2l0aHViLmNvbS9nby1nb2Rpbi9taWRkbGV3YXJlL2FtcXApCgp8ICoqTWlkZGxld2FyZSoqICAgICAgfCAqKkVuYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgUmVxdWVzdElEIHwgICFbZW5hYmxlZF0oaHR0cHM6Ly9pbWcuaWNvbnM4LmNvbS9jb2xvci8yNC8wMDAwMDAvY2hlY2tlZC5wbmcpCnwgTG9nZ2luZyB8ICAhW2VuYWJsZWRdKGh0dHBzOi8vaW1nLmljb25zOC5jb20vY29sb3IvMjQvMDAwMDAwL2NoZWNrZWQucG5nKQp8IFByb21ldGhldXNJbnN0cnVtZW50YXRpb24gfCAgIVtlbmFibGVkXShodHRwczovL2ltZy5pY29uczguY29tL2NvbG9yLzI0LzAwMDAwMC9jaGVja2VkLnBuZykKe3stIGVuZCB9fQ==\"")
packr.PackJSONBytes("./templates", "request_response.tpl", "\"Ly8gQ29kZSBnZW5lcmF0ZWQgYnkgR29kaW4gdnt7IC5Hb2Rpbi5WZXJzaW9uIH19OyBETyBOT1QgRURJVC4KCnBhY2thZ2UgZW5kcG9pbnQKCmltcG9ydCAoCiAgICBfICJ7eyAuU2VydmljZS5Nb2R1bGUgfX0vaW50ZXJuYWwvc2VydmljZSIKKQoKdHlwZSAoCnt7IHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0Ke3sgdGVtcGxhdGUgInJlcXVlc3QiIC4gfX0Ke3sgdGVtcGxhdGUgInJlc3BvbnNlIiAuIH19Cnt7IGVuZCB9fQopCgovLyBJbXBsZW1lbnQgdGhlIEZhaWxlciBpbnRlcmZhY2UgZm9yIGFsbCByZXNwb25zZXMKe3stIHJhbmdlIC5TZXJ2aWNlLk1ldGhvZHMgfX0KZnVuYyAocmVzcCB7eyAuUmVzcG9uc2UgfX0pIEZhaWxlZCgpIGVycm9yIHsgcmV0dXJuIHJlc3AuRXJyIH0Ke3stIGVuZCB9fQo=\"")
packr.PackJSONBytes("./templates", "service_stub.tpl", "\"cGFja2FnZSBzZXJ2aWNlCgppbXBvcnQgKAogICAgImNvbnRleHQiCikKCi8vIHt7IHRpdGxlIC5TZXJ2aWNlLk5hbWUgfX0gZG9jdW1lbnRhdGlvbiBpcyBhdXRvbWF0aWNhbGx5Ci8vIGFkZGVkIHRvIHRoZSBSRUFETUUuCnR5cGUge3sgdGl0bGUgLlNlcnZpY2UuTmFtZSB9fSBpbnRlcmZhY2UgewogICAgLy8gSGVsbG8gZ3JlZXRzIHlvdS4gVGhpcyBjb21tZW50IGlzIGFsc28gYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgUkVBRE1FLgogICAgLy8gQWxzbyBtYWtlIHN1cmUgdGhhdCBhbGwgcGFyYW1ldGVycyBhcmUgbmFtZWQsIEdvZGluIHJlcXVpcmVzIHRoaXMgaW5mb3JtYXRpb24gaW4gb3JkZXIgdG8gd29yay4KICAgIEhlbGxvKGN0eCBjb250ZXh0LkNvbnRleHQsIG5hbWUgc3RyaW5nKSAoZ3JlZXRpbmcgc3RyaW5nLCBlcnIgZXJyb3IpCn0KCg==\"")
}