hunk.code_window:             errored: true,
               loaded: true
           });
       }
       render() {
  
hunk.labels: keep keep add keep keep keep
hunk.after_edit:         if (this.props.onLinkLoadError) {
               this.props.onLinkLoadError();
           }
  
hunk.file_path: webapp/components/post_view/components/post_image.jsx
hunk.type: add
file: // Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.  Use of
  // this source code is governed by a BSD-style license that can be found in the
  // LICENSE file.
  
  package websocket
  
  import (
  	"math/rand"
  	"unsafe"
  )
  
  const wordSize = int(unsafe.Sizeof(uintptr(0)))
  
  func newMaskKey() [4]byte {
  	n := rand.Uint32()
  	return [4]byte{byte(n), byte(n >> 8), byte(n >> 16), byte(n >> 24)}
  }
  
  func maskBytes(key [4]byte, pos int, b []byte) int {
  
  	// Mask one byte at a time for small buffers.
  	if len(b) < 2*wordSize {
  		for i := range b {
  			b[i] ^= key[pos&3]
  			pos++
  		}
  		return pos & 3
  	}
  
  	// Mask one byte at a time to word boundary.
  	if n := int(uintptr(unsafe.Pointer(&b[0]))) % wordSize; n != 0 {
  		n = wordSize - n
  		for i := range b[:n] {
  			b[i] ^= key[pos&3]
  			pos++
  		}
  		b = b[n:]
  	}
  
  	// Create aligned word size key.
  	var k [wordSize]byte
  	for i := range k {
  		k[i] = key[(pos+i)&3]
  	}
  	kw := *(*uintptr)(unsafe.Pointer(&k))
  
  	// Mask one word at a time.
  	n := (len(b) / wordSize) * wordSize
  	for i := 0; i < n; i += wordSize {
  		*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(i))) ^= kw
  	}
  
  	// Mask one byte at a time for remaining bytes.
  	b = b[n:]
  	for i := range b {
  		b[i] ^= key[pos&3]
  		pos++
  	}
  
  	return pos & 3
  }
  