-- This list should be kept in sync with IANA.
-- http://www.iana.org/assignments/http-status-codes

local reason_phrases = setmetatable({
	["100"] = "Continue";
	["101"] = "Switching Protocols";
	["102"] = "Processing";
	["103"] = "Early Hints";

	["200"] = "OK";
	["201"] = "Created";
	["202"] = "Accepted";
	["203"] = "Non-Authoritative Information";
	["204"] = "No Content";
	["205"] = "Reset Content";
	["206"] = "Partial Content";
	["207"] = "Multi-Status";
	["208"] = "Already Reported";

	["226"] = "IM Used";

	["300"] = "Multiple Choices";
	["301"] = "Moved Permanently";
	["302"] = "Found";
	["303"] = "See Other";
	["304"] = "Not Modified";
	["305"] = "Use Proxy";

	["307"] = "Temporary Redirect";
	["308"] = "Permanent Redirect";

	["400"] = "Bad Request";
	["401"] = "Unauthorized";
	["402"] = "Payment Required";
	["403"] = "Forbidden";
	["404"] = "Not Found";
	["405"] = "Method Not Allowed";
	["406"] = "Not Acceptable";
	["407"] = "Proxy Authentication Required";
	["408"] = "Request Timeout";
	["409"] = "Conflict";
	["410"] = "Gone";
	["411"] = "Length Required";
	["412"] = "Precondition Failed";
	["413"] = "Request Entity Too Large";
	["414"] = "Request-URI Too Long";
	["415"] = "Unsupported Media Type";
	["416"] = "Requested Range Not Satisfiable";
	["417"] = "Expectation Failed";
	["418"] = "I'm a teapot"; -- not in IANA registry

	["421"] = "Misdirected Request";
	["422"] = "Unprocessable Entity";
	["423"] = "Locked";
	["424"] = "Failed Dependency";

	["426"] = "Upgrade Required";

	["428"] = "Precondition Required";
	["429"] = "Too Many Requests";

	["431"] = "Request Header Fields Too Large";

	["451"] = "Unavailable For Legal Reasons";

	["500"] = "Internal Server Error";
	["501"] = "Not Implemented";
	["502"] = "Bad Gateway";
	["503"] = "Service Unavailable";
	["504"] = "Gateway Timeout";
	["505"] = "HTTP Version Not Supported";
	["506"] = "Variant Also Negotiates";
	["507"] = "Insufficient Storage";
	["508"] = "Loop Detected";

	["510"] = "Not Extended";
	["511"] = "Network Authentication Required";
}, {__index = function() return "Unassigned" end})

return reason_phrases
