{"id":84853,"date":"2020-06-11T13:42:33","date_gmt":"2020-06-11T11:42:33","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3"},"modified":"2020-06-11T13:42:33","modified_gmt":"2020-06-11T11:42:33","slug":"predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/news\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3","title":{"rendered":"Vers\u00e3o preliminar do nginx com suporte para QUIC e HTTP\/3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Empresa NGINX <noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/blog\/introducing-technology-preview-nginx-support-for-quic-http-3\/\">anunciou<\/a><\/noindex> sobre o in\u00edcio dos testes <noindex><a rel=\"nofollow\" href=\"https:\/\/quic.nginx.org\/\">implementa\u00e7\u00e3o<\/a><\/noindex> dos protocolos QUIC e HTTP\/3 no servidor HTTP e proxy nginx. A implementa\u00e7\u00e3o \u00e9 baseada no <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/doc\/draft-ietf-quic-transport\/\">27\u00ba rascunho<\/a><\/noindex> da especifica\u00e7\u00e3o IETF-QUIC e est\u00e1 dispon\u00edvel atrav\u00e9s de <noindex><a rel=\"nofollow\" href=\"https:\/\/hg.nginx.org\/nginx-quic\/shortlog\/quic\">um reposit\u00f3rio separado<\/a><\/noindex>, ramificado da vers\u00e3o 1.19.0. O c\u00f3digo \u00e9 distribu\u00eddo sob a licen\u00e7a BSD e n\u00e3o se sobrep\u00f5e \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51695\">implementa\u00e7\u00e3o proposta anteriormente<\/a><\/noindex> do HTTP\/3 para nginx pela Cloudflare, que \u00e9 um projeto separado.<\/p>\n<p>O suporte ao HTTP\/3 no nginx \u00e9 marcado como experimental, pois <noindex><a rel=\"nofollow\" href=\"https:\/\/quic.nginx.org\/readme.html\">nem todos os recursos<\/a><\/noindex> do protocolo est\u00e3o implementados. Enquanto isso, o nginx j\u00e1 pode ser usado para enviar respostas a solicita\u00e7\u00f5es simples HTTP\/3 sobre QUIC e transferir\/baixar grandes arquivos. Entre os recursos ainda ausentes do protocolo est\u00e3o os mecanismos de negocia\u00e7\u00e3o de vers\u00e3o do protocolo, ECN e controle de congestionamento, logs estruturados, modo de recupera\u00e7\u00e3o (QUIC recovery, ger\u00eancia de fluxo e congestionamento), Rebinding de NAT, endere\u00e7os m\u00f3veis, Server push, anexo de dados (trailer). Al\u00e9m disso, foi proposta apenas uma suporte b\u00e1sico para o tratamento de pacotes ACK e controle de fluxo, o que requer melhorias. Nem todos os requisitos da norma foram atendidos.<\/p>\n<p>Para ativar o HTTP\/3, \u00e9 necess\u00e1rio compilar o nginx com o m\u00f3dulo http_v3_module e adicionar uma diretiva adicional<br \/>\n\u00ablisten\u00bb com a flag \u00abhttp3\u00bb para criar um socket UDP de escuta. Por exemplo:<\/p>\n<p>   server {<br \/>\n       listen 443 ssl;              # socket TCP para HTTP\/1.1<br \/>\n       listen 443 http3 reuseport;  # socket UDP para QUIC+HTTP\/3<\/p>\n<p>       ssl_protocols       TLSv1.3; # TLS 1.3 \u00e9 obrigat\u00f3rio no QUIC<br \/>\n       ssl_certificate     ssl\/www.example.com.crt;<br \/>\n       ssl_certificate_key ssl\/www.example.com.key;<\/p>\n<p>       add_header Alt-Svc \u2018quic=\u00bb:443\u2019\u2019; # indicador de disponibilidade QUIC<br \/>\n       add_header QUIC-Status $quic;     # Cabe\u00e7alho com o status do uso do QUIC<br \/>\n   }<\/p>\n<p>Vale lembrar que o HTTP\/3 padroniza o uso do protocolo QUIC como transporte para o HTTP\/2. O protocolo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chromium.org\/quic\/\">QUIC<\/a><\/noindex> (Quick UDP Internet Connections) est\u00e1 sendo desenvolvido pela Google desde 2013 como uma alternativa ao conjunto TCP+TLS para a Web, resolvendo problemas com o longo tempo de conex\u00e3o e negocia\u00e7\u00e3o em TCP e eliminando lat\u00eancias durante a perda de pacotes no processo de transmiss\u00e3o de dados. O QUIC \u00e9 uma camada sobre o protocolo UDP, suportando multiplexa\u00e7\u00e3o de v\u00e1rias conex\u00f5es e fornecendo m\u00e9todos de criptografia equivalentes ao TLS\/SSL. Do lado do cliente, o suporte experimental ao HTTP\/3 j\u00e1 foi adicionado ao  <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51540\">Curl<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51807\">Firefox<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51526\">Chromium<\/a><\/noindex>.<br \/>\n<center><noindex><a rel=\"nofollow\" href=\"https:\/\/www.nginx.com\/wp-content\/uploads\/2020\/06\/HTTP-v1-v2-v3-stacks.png\"><img decoding=\"async\" alt=\"Vers\u00e3o preliminar do nginx com suporte para QUIC e HTTP\/3\" src=\"\/wp-content\/uploads\/2020\/06\/d476eb3270bffc2caef1cb0fc79c38f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<p>Principais <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.google.com\/document\/d\/1lmL9EF6qKrk7gbazY8bIdvq3Pno2Xj_l_YShP40GLQE\/preview?sle=true#\">Caracter\u00edsticas<\/a><\/noindex> QUIC:\n<\/p>\n<ul>\n<li class=\"l\"> Alta seguran\u00e7a, equivalente ao TLS (na verdade, o QUIC fornece a capacidade de usar TLS 1.3 sobre UDP);\n<\/li>\n<li class=\"l\"> Controle da integridade do fluxo, prevenindo a perda de pacotes;\n<\/li>\n<li class=\"l\"> Capacidade de estabelecer uma conex\u00e3o instantaneamente (0-RTT, em cerca de 75% dos casos, os dados podem ser transmitidos imediatamente ap\u00f3s o envio do pacote de configura\u00e7\u00e3o da conex\u00e3o) e garantir lat\u00eancias m\u00ednimas entre o envio da solicita\u00e7\u00e3o e o recebimento da resposta (RTT, Round Trip Time);<br \/>\n<center><noindex><a rel=\"nofollow\" href=\"https:\/\/lh3.googleusercontent.com\/o62Ohn1Ppxna6zz0NtavqRyetjryOj-81Sz4bRt3U8lURVblk5RKOaCcf57i6BkmprremePJpq_sQcxfJiuA4wJBmRp3pR4BS1P-yiT6UNUPvnBeP_rLz9bvHxFE15kuNBM2hpE?a.png\"><img decoding=\"async\" alt=\"Vers\u00e3o preliminar do nginx com suporte para QUIC e HTTP\/3\" src=\"\/wp-content\/uploads\/2020\/06\/44e238666531ad98d2e7939a0d376ce5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/center><\/p>\n<\/li>\n<li class=\"l\"> N\u00e3o reutilizar o mesmo n\u00famero de sequ\u00eancia ao retransmitir um pacote, o que ajuda a evitar ambiguidades na identifica\u00e7\u00e3o dos pacotes recebidos e elimina timeouts;\n<\/li>\n<li class=\"l\"> A perda de um pacote afeta apenas a entrega do fluxo relacionado e n\u00e3o interrompe a entrega de dados em fluxos paralelos transmitidos atrav\u00e9s da conex\u00e3o atual;\n<\/li>\n<li class=\"l\"> Mecanismos de corre\u00e7\u00e3o de erros que minimizam atrasos devido \u00e0 retransmiss\u00e3o de pacotes perdidos. Uso de c\u00f3digos especiais de corre\u00e7\u00e3o de erros em n\u00edvel de pacote para reduzir situa\u00e7\u00f5es que exigem a retransmiss\u00e3o de dados de pacotes perdidos.\n<\/li>\n<li class=\"l\"> Os limites dos blocos criptogr\u00e1ficos est\u00e3o alinhados com os limites dos pacotes QUIC, o que diminui o impacto da perda de pacotes na decodifica\u00e7\u00e3o do conte\u00fado dos pacotes subsequentes.\n<\/li>\n<li class=\"l\"> Aus\u00eancia de problemas de bloqueio de fila TCP.\n<\/li>\n<li class=\"l\"> Suporte a identificadores de conex\u00e3o, permitindo reduzir o tempo de estabelecimento de novas conex\u00f5es para clientes m\u00f3veis.\n<\/li>\n<li class=\"l\"> Capacidade de conectar mecanismos avan\u00e7ados de controle de congestionamento.\n<\/li>\n<li class=\"l\"> Uso de t\u00e9cnicas de previs\u00e3o de largura de banda em cada dire\u00e7\u00e3o para garantir a intensidade ideal de envio de pacotes, evitando um estado de sobrecarga em que ocorre a perda de pacotes.\n<\/li>\n<li class=\"l\">  Not\u00e1vel <noindex><a rel=\"nofollow\" href=\"http:\/\/web.cs.wpi.edu\/~claypool\/ms\/quic\/quic-thesis.pdf\">aumento<\/a><\/noindex> de desempenho e capacidade em compara\u00e7\u00e3o ao TCP. Para servi\u00e7os de v\u00eddeo, como o YouTube, a aplica\u00e7\u00e3o do QUIC demonstrou uma redu\u00e7\u00e3o de 30% nas opera\u00e7\u00f5es de buffering durante a reprodu\u00e7\u00e3o de v\u00eddeos.\n<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Fonte: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=53137\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NGINX \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 QUIC \u0438 HTTP\/3 \u0432 HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u043f\u0440\u043e\u043a\u0441\u0438 nginx. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 27 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 IETF-QUIC \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0451\u043d\u043d\u044b\u0439 \u043e\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 1.19.0. \u041a\u043e\u0434 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u043d\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 HTTP\/3 \u0434\u043b\u044f nginx \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Cloudflare, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":84854,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-84853","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NGINX \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/news\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a nginx \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 QUIC \u0438 HTTP\/3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NGINX \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/news\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-11T11:42:33+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-11T11:42:33+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lan\u00e7amento preliminar do nginx com suporte para QUIC e HTTP\/3 | ProHoster","description":"A empresa NGINX anunciou o in\u00edcio dos testes","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a nginx \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 QUIC \u0438 HTTP\/3 | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NGINX \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0430 \u043e \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","og:url":"https:\/\/prohoster.info\/pt\/blog\/news\/predvaritelnyj-vypusk-nginx-s-podderzhkoj-quic-i-http-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-11T11:42:33+00:00","article:modified_time":"2020-06-11T11:42:33+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"84853","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:48:23","updated":"2022-09-27 18:16:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/84853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=84853"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/84853\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/84854"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=84853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=84853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=84853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}