Set up a Firewall with UFW

Set up a Firewall with UFW

simplify secured firewall

                        PHA+VW5jb21wbGljYXRlZCBGaXJld2FsbCAoVUZXKSBpcyBhIHNpbXBsaWZpZWQgZmlyZXdhbGwgbWFuYWdlbWVudCBpbnRlcmZhY2UgdGhhdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBsb3dlci1sZXZlbCBwYWNrZXQgZmlsdGVyaW5nIHRlY2hub2xvZ2llcyBzdWNoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPmlwdGFibGVzPC9zcGFuPjwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPnVmdGFibGVzPC9zcGFuPjwvY29kZT4uIExldOKAmXMgbGVhcm4gaG93IHRvIHNldCB1cCBhIGZpcmV3YWxsIHdpdGggVUZXIG9uIFVidW50dSBzZXJ2ZXIuPC9wPgoKPGgyIGlkPSJ1c2luZy1pcHY2LXdpdGgtdWZ3Ij5Vc2luZyBJUHY2IHdpdGggVUZXPC9oMj4KCjxwPklmIHlvdXIgVWJ1bnR1IHNlcnZlciBoYXMgSVB2NiBlbmFibGVkLCBlbnN1cmUgdGhhdCBVRlcgaXMgY29uZmlndXJlZCB0byBzdXBwb3J0IElQdjYgc28gdGhhdCBpdCB3aWxsIG1hbmFnZSBmaXJld2FsbCBydWxlcyBmb3IgSVB2NiBpbiBhZGRpdGlvbiB0byBJUHY0LiBUbyBkbyB0aGlzLCBvcGVuIHRoZSBVRlcgY29uZmlndXJhdGlvbiB3aXRoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPm5hbm88L3NwYW4+PC9jb2RlPiBvciB5b3VyIGZhdm91cml0ZSBlZGl0b3I6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPm5hbm8gL2V0Yy9kZWZhdWx0L3Vmdwo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGVuIG1ha2Ugc3VyZSB0aGUgdmFsdWUgb2YgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+SVBWNjwvc3Bhbj48L2NvZGU+IGlzIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPnllczwvc3Bhbj48L2NvZGU+LiBJdCBzaG91bGQgbG9vayBsaWtlIHRoaXM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtY29uZiBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuIj5JUFY2PC9zcGFuPj08c3BhbiBjbGFzcz0ibiI+eWVzPC9zcGFuPgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5TYXZlIGFuZCBjbG9zZSB0aGUgZmlsZS4gTm93LCB3aGVuIFVGVyBpcyBlbmFibGVkLCBpdCB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gd3JpdGUgYm90aCBJUHY0ICZhbXA7IElQdjYgZmlyZXdhbGwgcnVsZXMuIEhvd2V2ZXIsIGJlZm9yZSBlbmFibGluZyBVRlcsIHdlIHdpbGwgd2FudCB0byBlbnN1cmUgdGhhdCB5b3VyIGZpcmV3YWxsIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgeW91IHRvIGNvbm5lY3QgPGVtPnZpYTwvZW0+IFNTSC4gTGV04oCZcyBzdGFydCB3aXRoIHNldHRpbmcgdGhlIGRlZmF1bHQgcG9saWNpZXMuPC9wPgoKPGgyIGlkPSJzZXR0aW5nLXVwLWRlZmF1bHQtcG9saWNpZXMiPlNldHRpbmcgdXAgZGVmYXVsdCBwb2xpY2llczwvaDI+Cgo8cD5CeSBkZWZhdWx0LCBVRlcgaXMgc2V0IHRvIGRlbnkgYWxsIGluY29taW5nIGNvbm5lY3Rpb25zIGFuZCBhbGxvdyBhbGwgb3V0Z29pbmcgY29ubmVjdGlvbnMuIFRoaXMgbWVhbnMgYW55b25lIHRyeWluZyB0byByZWFjaCB5b3VyIHNlcnZlciB3b3VsZCBub3QgYmUgYWJsZSB0byBjb25uZWN0LCB3aGlsZSBhbnkgYXBwbGljYXRpb24gd2l0aGluIHRoZSBzZXJ2ZXIgd291bGQgYmUgYWJsZSB0byByZWFjaCB0aGUgb3V0c2lkZSB3b3JsZC48L3A+Cgo8cD5JZiB5b3UgaGF2ZSBhbHJlYWR5IGVkaXRlZCBVRlcsIHlvdSBjYW4gc2V0IHRoZSBkZWZhdWx0cyB1c2VkIGJ5IFVGVywgdXNlIHRoZXNlIGNvbW1hbmRzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgZGVmYXVsdCBkZW55IGluY29taW5nCjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlZmF1bHQgYWxsb3cgb3V0Z29pbmcKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhlc2UgZmlyZXdhbGwgZGVmYXVsdHMgYWxvbmUgbWlnaHQgc3VmZmljZSBmb3IgYSBwZXJzb25hbCBjb21wdXRlciwgYnV0IHNlcnZlcnMgdHlwaWNhbGx5IG5lZWQgdG8gcmVzcG9uZCB0byBpbmNvbWluZyByZXF1ZXN0cyBmcm9tIG91dHNpZGUgdXNlcnMuPC9wPgoKPGgyIGlkPSJhbGxvd2luZy1zc2gtY29ubmVjdGlvbnMiPkFsbG93aW5nIFNTSCBjb25uZWN0aW9uczwvaDI+Cgo8cD5JZiB5b3XigJlyZSB1c2luZyBhIGNsb3VkIHNlcnZlciwgeW91IHdpbGwgcHJvYmFibHkgd2FudCB0byBhbGxvdyBpbmNvbWluZyBTU0ggY29ubmVjdGlvbnMgc28geW91IGNhbiBjb25uZWN0IHRvIGFuZCBtYW5hZ2UgeW91ciBzZXJ2ZXIuPC9wPgoKPHA+VG8gY29uZmlndXJlIHlvdXIgc2VydmVyIHRvIGFsbG93IGluY29taW5nIFNTSCBjb25uZWN0aW9ucywgeW91IGNhbiB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgc3NoCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoaXMgd2lsbCBjcmVhdGUgZmlyZXdhbGwgcnVsZXMgdGhhdCB3aWxsIGFsbG93IGFsbCBjb25uZWN0aW9ucyBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjIyPC9zcGFuPjwvY29kZT4sIHdoaWNoIGlzIHRoZSBwb3J0IHRoYXQgdGhlIFNTSCBkYWVtb24gbGlzdGVucyBvbiBieSBkZWZhdWx0LiBVRlcga25vd3Mgd2hhdCBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPmFsbG93PC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPnNzaDwvc3Bhbj48L2NvZGU+IG1lYW5zIGJlY2F1c2UgaXTigJlzIGxpc3RlZCBhcyBhIHNlcnZpY2UgaW4gdGhlIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibyI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ibngiPmV0Yzwvc3Bhbj48c3BhbiBjbGFzcz0ibyI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ibngiPnNlcnZpY2VzPC9zcGFuPjwvY29kZT5maWxlLjwvcD4KCjxwPkhvd2V2ZXIsIHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZXF1aXZhbGVudCBydWxlIGJ5IHNwZWNpZnlpbmcgdGhlIHBvcnQgaW5zdGVhZCBvZiB0aGUgc2VydmljZSBuYW1lLiBGb3IgZXhhbXBsZSwgdGhpcyBjb21tYW5kIHdvcmtzIHRoZSBzYW1lIGFzIHRoZSBvbmUgYWJvdmU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyAyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5JZiB5b3UgY29uZmlndXJlZCB5b3UgU1NIIGRhZW1vbiB0byB1c2UgYSBkaWZmZXJlbnQgcG9ydCwgeW91IHdpbGwgaGF2ZSB0byBzcGVjaWZ5IHRoZSBhcHByb3ByaWF0ZSBwb3J0LiBGb3IgZXhhbXBsZSwgaWYgeW91ciBTU0ggc2VydmVyIGlzIGxpc3RlbmluZyBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjIyMjI8L3NwYW4+PC9jb2RlPiwgeW91IGNhbiB1c2UgdGhpcyBjb21tYW5kIHRvIGFsbG93IGNvbm5lY3Rpb25zIG9uIHRoYXQgcG9ydDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDIyMjIKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+Tm93IHRoYXQgeW91ciBmaXJld2FsbCBpcyBjb25maWd1cmVkIHRvIGFsbG93IGluY29taW5nIFNTSCBjb25uZWN0aW9ucywgd2UgY2FuIGVuYWJsZSBpdC48L3A+Cgo8aDIgaWQ9ImVuYWJsaW5nLXVmdyI+RW5hYmxpbmcgVUZXPC9oMj4KCjxwPlRvIGVuYWJsZSBVRlcsIHVzZSB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyA8c3BhbiBjbGFzcz0ibmIiPmVuYWJsZTwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+WW91IHdpbGwgcmVjZWl2ZSBhIHdhcm5pbmcgdGhhdCBzYXlzIHRoZSBjb21tYW5kIG1heSBkaXNydXB0IGV4aXN0aW5nIFNTSCBjb25uZWN0aW9ucy4gV2UgYWxyZWFkeSBzZXQgdXAgYSBmaXJld2FsbCBydWxlIHRoYXQgYWxsb3dzIFNTSCBjb25uZWN0aW9ucywgc28gaXQgc2hvdWxkIGJlIGZpbmUgdG8gY29udGludWUuIFJlc3BvbmQgdG8gdGhlIHByb21wdCB3aXRoIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPnk8L3NwYW4+PC9jb2RlPiBhbmQgaGl0IDxrYmQ+RU5URVI8L2tiZD4uPC9wPgoKPHA+VGhlIGZpcmV3YWxsIGlzIG5vdyBhY3RpdmUuIFJ1biB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+c3Vkbzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij51Znc8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+c3RhdHVzPC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPnZlcmJvc2U8L3NwYW4+PC9jb2RlPiBjb21tYW5kIHRvIHNlZSB0aGUgcnVsZXMgdGhhdCBhcmUgc2V0LjwvcD4KCjxoMiBpZD0iYWxsb3dpbmctb3RoZXItY29ubmVjdGlvbnMiPkFsbG93aW5nIG90aGVyIGNvbm5lY3Rpb25zPC9oMj4KCjxwPkF0IHRoaXMgcG9pbnQsIHlvdSBzaG91bGQgYWxsb3cgYWxsIG9mIHRoZSBvdGhlciBjb25uZWN0aW9ucyB0aGF0IHlvdXIgc2VydmVyIG5lZWRzIHRvIHJlc3BvbmQgdG8uIFRoZSBjb25uZWN0aW9ucyB0aGF0IHlvdSBzaG91bGQgYWxsb3cgZGVwZW5kcyBvbiB5b3VyIHNwZWNpZmljIG5lZWRzLiBMdWNraWx5LCB5b3UgYWxyZWFkeSBrbm93IGhvdyB0byB3cml0ZSBydWxlcyB0aGF0IGFsbG93IGNvbm5lY3Rpb25zIGJhc2VkIG9uIGEgc2VydmljZSBuYW1lIG9yIHBvcnQ7IHdlIGFscmVhZHkgZGlkIHRoaXMgZm9yIFNTSCBvbiBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjIyPC9zcGFuPjwvY29kZT4uIFlvdSBjYW4gYWxzbyBkbyB0aGlzIGZvcjo8L3A+Cgo8dWw+CiAgPGxpPkhUVFAgb24gcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1pIj44MDwvc3Bhbj48L2NvZGU+LCB1c2luZzogPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+c3Vkbzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij51Znc8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+YWxsb3c8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+aHR0cDwvc3Bhbj48L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPnN1ZG88L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+dWZ3PC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPmFsbG93PC9zcGFuPiA8c3BhbiBjbGFzcz0ibWkiPjgwPC9zcGFuPjwvY29kZT4KPC9saT4KICA8bGk+SFRUUFMgb24gcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1pIj40NDM8L3NwYW4+PC9jb2RlPiwgdXNpbmcgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+c3Vkbzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij51Znc8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+YWxsb3c8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+aHR0cHM8L3NwYW4+PC9jb2RlPiBvciA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im54Ij5zdWRvPC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPnVmdzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5hbGxvdzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im1pIj40NDM8L3NwYW4+PC9jb2RlPgo8L2xpPgo8L3VsPgoKPHA+VGhlcmUgYXJlIHNldmVyYWwgb3RoZXJzIHdheXMgdG8gYWxsb3cgb3RoZXIgY29ubmVjdGlvbnMsIGFzaWRlIGZyb20gc3BlY2lmeWluZyBhIHBvcnQgb3Iga25vd24gc2VydmljZS48L3A+Cgo8aDMgaWQ9InNwZWNpZmljLXBvcnQtcmFuZ2VzIj5TcGVjaWZpYyBwb3J0IHJhbmdlczwvaDM+Cgo8cD5Zb3UgY2FuIHNwZWNpZnkgcG9ydCByYW5nZXMgd2l0aCBVRlcuIFNvbWUgYXBwbGljYXRpb25zIHVzZSBtdWx0aXBsZSBwb3J0cywgaW5zdGVhZCBvZiBhIHNpbmdsZSBwb3J0LjwvcD4KCjxwPkZvciBleGFtcGxlLCB0byBhbGxvdyBYMTEgY29ubmVjdGlvbnMsIHdoaWNoIHVzZSBwb3J0cyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1pIj42MDAwPC9zcGFuPjwvY29kZT4tPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJtaSI+NjAwNzwvc3Bhbj48L2NvZGU+LCB1c2UgdGhlc2UgY29tbWFuZHM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyA2MDAwOjYwMDcvdGNwCjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDYwMDA6NjAwNy91ZHAKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+V2hlbiBzcGVjaWZ5aW5nIHBvcnQgcmFuZ2VzIHdpdGggVUZXLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSBwcm90b2NvbCAoPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+dGNwPC9zcGFuPjwvY29kZT4gb3IgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+dWRwPC9zcGFuPjwvY29kZT4pIHRoYXQgdGhlIHJ1bGVzIHNob3VsZCBhcHBseSB0by4gV2UgaGF2ZW7igJl0IG1lbnRpb25lZCB0aGlzIGJlZm9yZSBiZWNhdXNlIG5vdCBzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBhdXRvbWF0aWNhbGx5IGFsbG93cyBib3RoIHByb3RvY29scywgd2hpY2ggaXMgT0sgaW4gbW9zdCBjYXNlcy48L3A+Cgo8aDMgaWQ9InNwZWNpZmljLWlwLWFkZHJlc3NlcyI+U3BlY2lmaWMgSVAgYWRkcmVzc2VzPC9oMz4KCjxwPldoZW4gd29ya2luZyB3aXRoIFVGVywgeW91IGNhbiBhbHNvIHNwZWNpZnkgSVAgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gYWxsb3cgY29ubmVjdGlvbnMgZnJvbSBhIHNwZWNpZmljIElQIGFkZHJlc3MsIHN1Y2ggYXMgYSB3b3JrIG9yIGhvbWUgSVAgYWRkcmVzcyBvZiA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1mIj4yMDEuMjAyPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4uPC9zcGFuPjxzcGFuIGNsYXNzPSJtZiI+MjAzLjIwNDwvc3Bhbj48L2NvZGU+LCB5b3UgbmVlZCB0byBzcGVjaWZ5IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0iayI+ZnJvbTwvc3Bhbj48L2NvZGU+LCB0aGVuIHRoZSBJUCBhZGRyZXNzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgZnJvbSAyMDEuMjAyLjIwMy4yMDQKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+WW91IGNhbiBhbHNvIHNwZWNpZnkgYSBzcGVjaWZpYyBwb3J0IHRoYXQgdGhlIElQIGFkZHJlc3MgaXMgYWxsb3dlZCB0byBjb25uZWN0IHRvIGJ5IGFkZGluZyA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im54Ij50bzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5hbnk8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+cG9ydDwvc3Bhbj48L2NvZGU+IGZvbGxvd2VkIGJ5IHRoZSBwb3J0IG51bWJlci4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGFsbG93IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWYiPjIwMS4yMDI8L3NwYW4+PHNwYW4gY2xhc3M9InAiPi48L3NwYW4+PHNwYW4gY2xhc3M9Im1mIj4yMDMuMjA0PC9zcGFuPjwvY29kZT4gdG8gY29ubmVjdCB0byBwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjIyPC9zcGFuPjwvY29kZT4sIHVzZSB0aGlzIGNvbW1hbmQ6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyBmcm9tIDIwMS4yMDIuMjAzLjIwNCB0byBhbnkgcG9ydCAyMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8aDMgaWQ9InN1Ym5ldHMiPlN1Ym5ldHM8L2gzPgoKPHA+SWYgeW91IHdhbnQgdG8gYWxsb3cgYSBzdWJuZXQgb2YgSVAgYWRkcmVzc2VzLCB5b3UgY2FuIGRvIHNvIHVzaW5nIENJRFIgbm90YXRpb24gdG8gc3BlY2lmeSBhIG5ldCBtYXNrLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gYWxsb3cgYWxsIG90IHRoZSBJUCBhZGRyZXNzZXMgcmFuZ2luZyBmcm9tIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWYiPjIwMi4wPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4uPC9zcGFuPjxzcGFuIGNsYXNzPSJtZiI+MTEwLjE8L3NwYW4+PC9jb2RlPiB0byA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1mIj4yMDIuMDwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ljwvc3Bhbj48c3BhbiBjbGFzcz0ibWYiPjExMC4yNTQ8L3NwYW4+PC9jb2RlPiB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDIwMi4wLjExMC4wLzI0CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPkxpa2V3aXNlLCB5b3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgZGVzdGluYXRpb24gcG9ydCB0aGF0IHRoZSBzdWJuZXQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJtZiI+MjAyLjA8L3NwYW4+PHNwYW4gY2xhc3M9InAiPi48L3NwYW4+PHNwYW4gY2xhc3M9Im1mIj4xMTAuMDwvc3Bhbj48c3BhbiBjbGFzcz0ibyI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ibWkiPjI0PC9zcGFuPjwvY29kZT4gaXMgYWxsb3dlZCB0byBjb25uZWN0IHRvLiBBZ2Fpbiwgd2XigJlsbCB1c2UgcG9ydCA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1pIj4yMjwvc3Bhbj48L2NvZGU+IGFzIGFuIGV4YW1wbGU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBhbGxvdyBmcm9tIDIwMi4wLjExMC4wLzI0IHRvIGFueSBwb3J0IDIyCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxoMyBpZD0iY29ubmVjdGlvbi10by1hLXNwZWNpZmljLW5ldHdvcmstaW50ZXJmYWNlIj5Db25uZWN0aW9uIHRvIGEgc3BlY2lmaWMgbmV0d29yayBpbnRlcmZhY2U8L2gzPgoKPHA+SWYgeW91IHdhbnQgdG8gY3JlYXRlIGEgZmlyZXdhbGwgcnVsZSB0aGF0IG9ubHkgYXBwbGllcyB0byBhIHNwZWNpZmljIG5ldHdvcmsgaW50ZXJmYWNlLCB5b3UgY2FuIGRvIHNvIGJ5IHNwZWNpZnlpbmcgPGVtPuKAnGFsbG93IGluIG9u4oCdPC9lbT4gZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLjwvcD4KCjxwPllvdSBtYXkgd2FudCB0byBsb29rIHVwIHlvdXIgbmV0d29yayBpbnRlcmZhY2VzIGJlZm9yZSBjb250aW51aW5nLiBUbyBkbyBzbywgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPmlwIGFkZHIKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhlIG91dHB1dCBpbmRpY2F0ZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWVzLiBUaGV5IGFyZSB0eXBpY2FsbHkgbmFtZWQgc29tZXRoaW5nIGxpa2UgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+ZXRoMDwvc3Bhbj48L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibngiPmVuczM8L3NwYW4+PC9jb2RlPi48L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im1pIj4yPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPmV0aDA8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJvIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+QlJPQURDQVNUPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+TVVMVElDQVNUPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4sPC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+VVA8L3NwYW4+PHNwYW4gY2xhc3M9InAiPiw8L3NwYW4+PHNwYW4gY2xhc3M9Im54Ij5MT1dFUl9VUDwvc3Bhbj48c3BhbiBjbGFzcz0ibyI+Jmd0Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5tdHU8L3NwYW4+IDxzcGFuIGNsYXNzPSJtaSI+MTUwMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5xZGlzYzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5wZmlmb19mYXN0PC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPnN0YXRlPC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+Ljwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPi48L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj4uPC9zcGFuPgo8c3BhbiBjbGFzcz0ibWkiPjM8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+ZXRoMTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9Im8iPiZsdDs8L3NwYW4+PHNwYW4gY2xhc3M9Im54Ij5CUk9BRENBU1Q8L3NwYW4+PHNwYW4gY2xhc3M9InAiPiw8L3NwYW4+PHNwYW4gY2xhc3M9Im54Ij5NVUxUSUNBU1Q8L3NwYW4+PHNwYW4gY2xhc3M9Im8iPiZndDs8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+bXR1PC9zcGFuPiA8c3BhbiBjbGFzcz0ibWkiPjE1MDA8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+cWRpc2M8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+bm9vcDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5zdGF0ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5ET1dOPC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPmdyb3VwPC9zcGFuPiA8c3BhbiBjbGFzcz0iayI+ZGVmYXVsdDwvc3Bhbj4KPHNwYW4gY2xhc3M9InAiPi48L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj4uPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+Ljwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+U28sIGlmIHlvdXIgc2VydmVyIGhhcyBhIHB1YmxpYyBuZXR3b3JrIGludGVyZmFjZSBjYWxsZWQgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+ZXRoMDwvc3Bhbj48L2NvZGU+LCB5b3UgY291bGQgYWxsb3cgSFRUUCB0cmFmZmljIChwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjgwPC9zcGFuPjwvY29kZT4pIHRvIGl0IHdpdGggdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgYWxsb3cgPHNwYW4gY2xhc3M9ImsiPmluIDwvc3Bhbj5vbiBldGgwIHRvIGFueSBwb3J0IDgwCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPkRvaW5nIHNvIHdvdWxkIGFsbG93IHlvdXIgc2VydmVyIHRvIHJlY2VpdmUgSFRUUCByZXF1ZXN0cyBmcm9tIHRoZSBwdWJsaWMgaW50ZXJuZXQuPC9wPgoKPHA+T3IsIGlmIHlvdSB3YW50IHlvdXIgTXlTUUwgZGF0YWJhc2Ugc2VydmVyIChwb3J0IDxjb2RlIGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48c3BhbiBjbGFzcz0ibWkiPjMzMDY8L3NwYW4+PC9jb2RlPikgdG8gbGlzdGVuIGZvciBjb25uZWN0aW9ucyBvbiB0aGUgcHJpdmF0ZSBuZXR3b3JrIGludGVyZmFjZSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im54Ij5ldGgxPC9zcGFuPjwvY29kZT4sIGZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGFsbG93IDxzcGFuIGNsYXNzPSJrIj5pbiA8L3NwYW4+b24gZXRoMSB0byBhbnkgcG9ydCAzMzA2CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoaXMgd291bGQgYWxsb3cgb3RoZXIgc2VydmVycyBvbiB5b3UgcHJpdmF0ZSBuZXR3b3JrIHRvIGNvbm5lY3QgeW91ciBNeVNRTCBkYXRhYmFzZS48L3A+Cgo8aDIgaWQ9ImRlbnlpbmctY29ubmVjdGlvbnMiPkRlbnlpbmcgY29ubmVjdGlvbnM8L2gyPgoKPHA+SWYgeW91IGhhdmVu4oCZdCBjaGFuZ2VkIHRoZSBkZWZhdWx0IHBvbGljeSBmb3IgaW5jb21pbmcgY29ubmVjdGlvbnMsIFVGVyBpcyBjb25maWd1cmVkIHRvIGRlbnkgYWxsIGluY29taW5nIGNvbm5lY3Rpb25zLiBHZW5lcmFsbHksIHRoaXMgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIHNlY3VyZSBmaXJld2FsbCBwb2xpY3kgYnkgcmVxdWlyaW5nIHlvdSB0byBjcmVhdGUgcnVsZXMgdGhhdCBleHBsaWNpdGx5IGFsbG93IHNwZWNpZmljIHBvcnRzIGFuZCBJUCBhZGRyZXNzZXMgdGhyb3VnaC48L3A+Cgo8cD5Ib3dldmVyLCBzb21ldGltZXMgeW91IHdpbGwgd2FudCB0byBkZW55IHNwZWNpZmljIGNvbm5lY3Rpb25zIGJhc2VkIG9uIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyBvciBzdWJuZXQsIHBlcmhhcHMgYmVjYXVzZSB5b3Uga25vdyB0aGF0IHlvdXIgc2VydmVyIGlzIGJlaW5nIGF0dGFja2VkIGZyb20gdGhlcmUuIEFsc28sIGlmIHlvdSB3YW50IHRvIGNoYW5nZSB5b3VyIGRlZmF1bHQgaW5jb21pbmcgcG9saWN5IHRvIDxzdHJvbmc+YWxsb3c8L3N0cm9uZz4gKHdoaWNoIGlzIG5vdCByZWNvbW1lbmRlZCksIHlvdSB3b3VsZCBuZWVkIHRvIGNyZWF0ZSA8c3Ryb25nPmRlbnk8L3N0cm9uZz4gcnVsZXMgZm9yIGFueSBzZXJ2aWNlcyBvciBJUCBhZGRyZXNzZXMgdGhhdCB5b3UgZG9u4oCZdCB3YW50IHRvIGFsbG93IGNvbm5lY3Rpb25zIGZvci48L3A+Cgo8cD5Gb3IgZXhhbXBsZSwgdG8gZGVueSBIVFRQIGNvbm5lY3Rpb25zLCB5b3UgY291bGQgdXNlIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRlbnkgaHR0cAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5PciwgaWYgeW91IHdhbnQgdG8gZGVueSBhbGwgY29ubmVjdGlvbnMgZnJvbSA8Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PHNwYW4gY2xhc3M9Im1mIj4yMDEuMjAyPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4uPC9zcGFuPjxzcGFuIGNsYXNzPSJtZiI+MjAzLjIwNDwvc3Bhbj48L2NvZGU+IHlvdSBjb3VsZCB1c2UgdGhpcyBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgZGVueSBmcm9tIDIwMS4yMDIuMjAzLjIwNAo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8aDIgaWQ9ImRlbGV0aW5nLXJ1bGVzIj5EZWxldGluZyBydWxlczwvaDI+Cgo8cD5Lbm93aW5nIGhvdyB0byBkZWxldGUgZmlyZXdhbGwgcnVsZXMgaXMganVzdCBhcyBpbXBvcnRhbnQgYXMga25vd2luZyBob3cgdG8gY3JlYXRlIHRoZW0uIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHdheXMgdG8gc3BlY2lmeSB3aGljaCBydWxlcyBkZSBkZWxldGU6IGJ5IHJ1bGUgbnVtYmVyIG9yIGJ5IHRoZSBhY3R1YWwgcnVsZS48L3A+Cgo8aDMgaWQ9ImJ5LXJ1bGUtbnVtYmVyIj5CeSBydWxlIG51bWJlcjwvaDM+Cgo8cD5JZiB5b3XigJlyZSB1c2luZyB0aGUgcnVsZSBudW1iZXIgdG8gZGVsZXRlIGZpcmV3YWxsIHJ1bGVzLCB0aGUgZmlyc3QgdGhpbmcgeW914oCZbGwgd2FudCB0byBkbyBpcyBnZXQgYSBsaXN0IG9mIHlvdXIgZmlyZXdhbGwgcnVsZXMuIFRoZSBVRlcgc3RhdHVzIGNvbW1hbmQgaGFzIGFuIG9wdGlvbiB0byBkaXNwbGF5IG51bWJlcnMgbmV4dCB0byBlYWNoIHJ1bGUsIGFzIGRlbW9uc3RyYXRlZCBoZXJlOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51Zncgc3RhdHVzIG51bWJlcmVkCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibngiPlN0YXR1czwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij5hY3RpdmU8L3NwYW4+CgogICAgIDxzcGFuIGNsYXNzPSJueCI+VG88L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJueCI+QWN0aW9uPC9zcGFuPiAgICAgIDxzcGFuIGNsYXNzPSJueCI+RnJvbTwvc3Bhbj4KICAgICA8c3BhbiBjbGFzcz0ibyI+LS08L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJvIj4tLS0tLS08L3NwYW4+ICAgICAgPHNwYW4gY2xhc3M9Im8iPi0tLS08L3NwYW4+CjxzcGFuIGNsYXNzPSJwIj5bPC9zcGFuPiA8c3BhbiBjbGFzcz0ibWkiPjE8L3NwYW4+PHNwYW4gY2xhc3M9InAiPl08L3NwYW4+IDxzcGFuIGNsYXNzPSJtaSI+MjI8L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJueCI+QUxMT1c8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+SU48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJtZiI+MTUuMTU8L3NwYW4+PHNwYW4gY2xhc3M9InAiPi48L3NwYW4+PHNwYW4gY2xhc3M9Im1mIj4xNS4wPC9zcGFuPjxzcGFuIGNsYXNzPSJvIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJtaSI+MjQ8L3NwYW4+CjxzcGFuIGNsYXNzPSJwIj5bPC9zcGFuPiA8c3BhbiBjbGFzcz0ibWkiPjI8L3NwYW4+PHNwYW4gY2xhc3M9InAiPl08L3NwYW4+IDxzcGFuIGNsYXNzPSJtaSI+ODA8L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJueCI+QUxMT1c8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+SU48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJueCI+QW55d2hlcmU8L3NwYW4+CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPklmIHdlIGRlY2lkZSB0aGF0IHdlIHdhbnQgdG8gZGVsZXRlIHJ1bGUgMiwgdGhlIG9uZSB0aGF0IGFsbG93cyBwb3J0IDgwIGNvbm5lY3Rpb25zLCB3ZSBjYW4gc3BlY2lmeSBpdCBpbiBhIFVGVyBkZWxldGUgY29tbWFuZCBsaWtlIHRoaXM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2Utc2ggaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibmIiPnN1ZG8gPC9zcGFuPnVmdyBkZWxldGUgMgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGlzIHdvdWxkIHNob3cgYSBjb25maXJtYXRpb24gcHJvbXB0IHRoZW4gZGVsZXRlIHJ1bGUgMiwgd2hpY2ggYWxsb3dzIEhUVFAgY29ubmVjdGlvbnMuIE5vdGUgdGhhdCBpZiB5b3UgaGF2ZSBJUHY2IGVuYWJsZWQsIHlvdSB3b3VsZCB3YW50IHRvIGRlbGV0ZSB0aGUgY29ycmVzcG9uZGluZyBJUHY2IHJ1bGUgYXMgd2VsbC48L3A+Cgo8aDIgaWQ9ImNoZWNraW5nLXVmdy1zdGF0dXMtYW5kLXJ1bGVzIj5DaGVja2luZyBVRlcgc3RhdHVzIGFuZCBydWxlczwvaDI+Cgo8cD5BdCBhbnkgdGltZSwgeW91IGNhbiBjaGVjayB0aGUgc3RhdHVzIG9mIFVGVyB3aXRoIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IHN0YXR1cyB2ZXJib3NlCjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPklmIFVGVyBpcyBkaXNhYmxlZCwgd2hpY2ggaXQgaXMgYnkgZGVmYXVsdCwgeW914oCZbGwgc2VlIHNvbWV0aGluZyBsaWtlIHRoaXM6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtamF2YXNjcmlwdCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJueCI+U3RhdHVzPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPmluYWN0aXZlPC9zcGFuPgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5JZiBVRlcgaXMgYWN0aXZlLCB0aGUgb3V0cHV0IG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1qYXZhc2NyaXB0IGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im54Ij5TdGF0dXM8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+YWN0aXZlPC9zcGFuPgo8c3BhbiBjbGFzcz0ibngiPkxvZ2dpbmc8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+b248L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+bG93PC9zcGFuPjxzcGFuIGNsYXNzPSJwIj4pPC9zcGFuPgo8c3BhbiBjbGFzcz0ibngiPkRlZmF1bHQ8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+ZGVueTwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPig8L3NwYW4+PHNwYW4gY2xhc3M9Im54Ij5pbmNvbWluZzwvc3Bhbj48c3BhbiBjbGFzcz0icCI+KSw8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+YWxsb3c8L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj4oPC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+b3V0Z29pbmc8L3NwYW4+PHNwYW4gY2xhc3M9InAiPiksPC9zcGFuPiA8c3BhbiBjbGFzcz0ibngiPmRpc2FibGVkPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+KDwvc3Bhbj48c3BhbiBjbGFzcz0ibngiPnJvdXRlZDwvc3Bhbj48c3BhbiBjbGFzcz0icCI+KTwvc3Bhbj4KPHNwYW4gY2xhc3M9Im54Ij5OZXc8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+cHJvZmlsZXM8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+c2tpcDwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJueCI+VG88L3NwYW4+ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJueCI+QWN0aW9uPC9zcGFuPiAgICAgIDxzcGFuIGNsYXNzPSJueCI+RnJvbTwvc3Bhbj4KPHNwYW4gY2xhc3M9Im8iPi0tPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibyI+LS0tLS0tPC9zcGFuPiAgICAgIDxzcGFuIGNsYXNzPSJvIj4tLS0tPC9zcGFuPgo8c3BhbiBjbGFzcz0ibWkiPjIyPC9zcGFuPjxzcGFuIGNsYXNzPSJvIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJueCI+dGNwPC9zcGFuPiAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJueCI+QUxMT1c8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+SU48L3NwYW4+ICAgIDxzcGFuIGNsYXNzPSJueCI+QW55d2hlcmU8L3NwYW4+CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlVzZSB0aGUgPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+c3RhdHVzPC9zcGFuPjwvY29kZT4gY29tbWFuZCBpZiB5b3Ugd2FudCB0byBjaGVjayBob3cgVUZXIGhhcyBjb25maWd1cmVkIHRoZSBmaXJld2FsbC48L3A+Cgo8aDIgaWQ9ImRpc2FibGluZy1vci1yZXNldHRpbmctdWZ3Ij5EaXNhYmxpbmcgb3IgcmVzZXR0aW5nIFVGVzwvaDI+Cgo8cD5JZiB5b3UgZGVjaWRlIHRvIGRpc2FibGUgVUZXLCBkb2luZyBzbyB3aXRoIHRoaXMgY29tbWFuZDo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1zaCBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJuYiI+c3VkbyA8L3NwYW4+dWZ3IGRpc2FibGUKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+QW55IHJ1bGVzIHRoYXQgeW91IGNyZWF0ZWQgd2l0aCBVRlcgd2lsbCBubyBsb25nZXIgYmUgYWN0aXZlLiBZb3UgY2FuIGFsd2F5cyBydW4gPGNvZGUgY2xhc3M9Imxhbmd1YWdlLWphdmFzY3JpcHQgaGlnaGxpZ2h0ZXItcm91Z2UiPjxzcGFuIGNsYXNzPSJueCI+c3Vkbzwvc3Bhbj4gPHNwYW4gY2xhc3M9Im54Ij51Znc8L3NwYW4+IDxzcGFuIGNsYXNzPSJueCI+ZW5hYmxlPC9zcGFuPjwvY29kZT4gaWYgeW91IG5lZWQgdG8gYWN0aXZhdGUgaXQgbGF0ZXIuPC9wPgoKPHA+SWYgeW91IGFscmVhZHkgaGF2ZSBVRlcgcnVsZXMgY29uZmlndXJlZCBidXQgeW91IGRlY2lkZSB0aGF0IHlvdSB3YW50IHRvIHN0YXJ0IG92ZXIsIHlvdSBjYW4gdXNlIHRoZSByZXNldCBjb21tYW5kOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLXNoIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9Im5iIj5zdWRvIDwvc3Bhbj51ZncgcmVzZXQKPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhpcyB3aWxsIGRpc2FibGUgVUZXIGFuZCBkZWxldGUgYW55IHJ1bGVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRlZmluZWQuIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBkZWZhdWx0IHBvbGljaWVzIHdvbuKAmXQgY2hhbmdlIHRvIHRoZWlyIG9yaWdpbmFsIHNldHRpbmdzLCBpZiB5b3UgbW9kaWZpZWQgdGhlbSBhdCBhbnkgcG9pbnQuIFRoaXMgc2hvdWxkIGdpdmUgeW91IGEgZnJlc2ggc3RhcnQgd2l0aCBVRlcuPC9wPgoKPGgyIGlkPSJjb25jbHVzaW9uIj5Db25jbHVzaW9uPC9oMj4KCjxwPllvdXIgZmlyZXdhbGwgaXMgbm93IGNvbmZpZ3VyZWQgdG8gYWxsb3cgc3BlY2lmaWMgY29ubmVjdGlvbnMuIEJlIHN1cmUgdG8gYWxsb3cgYW55IG90aGVyIGluY29taW5nIGNvbm5lY3Rpb25zIHRoYXQgeW91ciBzZXJ2ZXIgbmVlZHMsIHdoaWxlIGxpbWl0aW5nIGFueSB1bm5lY2Vzc2FyeSBjb25uZWN0aW9ucywgc28geW91ciBzZXJ2ZXIgd2lsbCBiZSBmdW5jdGlvbmFsIGFuZCBzZWN1cmUuPC9wPgo=
                        
Ads by Google

林宏

Frank Lin

Hey, there! This is Frank Lin (@flinhong), one of the 1.41 billion 🇨🇳. This 'inDev. Journal' site holds the exploration of my quirky thoughts and random adventures through life. Hope you enjoy reading and perusing my posts.

YOU MAY ALSO LIKE

Setup an IKEv2 server with StrongSwan

Tutorials

2020.01.09

Setup an IKEv2 server with StrongSwan

IKEv2, or Internet Key Exchange v2, is a protocol that allows for direct IPSec tunnelling between two points. In IKEv2 implementations, IPSec provides encryption for the network traffic. IKEv2 is natively supported on some platforms (OS X 10.11+, iOS 9.1+, and Windows 10) with no additional applications necessary, and it handles client hiccups quite smoothly.

Hands on IBM Cloud Functions with CLI

Tools

2020.10.20

Hands on IBM Cloud Functions with CLI

IBM Cloud CLI allows complete management of the Cloud Functions system. You can use the Cloud Functions CLI plugin-in to manage your code snippets in actions, create triggers, and rules to enable your actions to respond to events, and bundle actions into packages.