Lempel–Ziv–Stac (LZS, or Stac compression or Stacker compression) is a lossless data compression algorithm that uses a combination of the LZ77 sliding-window compression algorithm and fixed Huffman coding. It was originally developed by Stac Electronics for tape compression, and subsequently adapted for hard disk compression and sold as the Stacker disk compression software. It was later specified as a compression algorithm for various network protocols. LZS is specified in the Cisco IOS stack. LZS compression is standardized as an INCITS (previously ANSI) standard. LZS compression is specified for various Internet protocols: – PPP LZS-DCP Compression Protocol (LZS-DCP) – PPP Stac LZS Compression Protocol – IP Payload Compression Using LZS – Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS) LZS compression and decompression uses an LZ77 type algorithm. It uses the last 2 KB of uncompressed data as a sliding-window dictionary. An LZS compressor looks for matches between the data to be compressed and the last 2 KB of data. If it finds a match, it encodes an offset/length reference to the dictionary. If no match is found, the next data byte is encoded as a "literal" byte. The compressed data stream ends with an end-marker. Data is encoded into a stream of variable-bit-width tokens. A literal byte is encoded as a '0' bit followed by the 8 bits of the byte. An offset/length reference is encoded as a '1' bit followed by the encoded offset, followed by the encoded length. One exceptional encoding is an end marker, described below. An offset can have a minimum value of 1 and a maximum value of 2047. A value of 1 refers to the most recent byte in the history buffer, immediately preceding the next data byte to be processed. An offset is encoded as: If the offset is less than 128: a '1' bit followed by a 7-bit offset value. If the offset is greater than or equal to 128: a '0' bit followed by an 11-bit offset value. A length is encoded as: An end marker is encoded as the 9-bit token 110000000.