#include <iostream>
#include <complex>

#define EPS (1e-10)
#define EQ(a,b) (abs((a)-(b)) < EPS)
#define EQV(a,b) ( EQ((a).real(), (b).real) && EQ((a).imag(), (b).imag) )

using namespace std;

typedef complex<double> P;

double dot(P a, P b) {
  return (a.real() * b.real() + a.imag() * b.imag());
}

int is_orthogonal(P a1, P a2, P b1, P b2) {
  return EQ( dot(a1-a2, b1-b2), 0.0);
}

int main() {
  P a1, a2, b1, b2;
  
  while (true) {
    cin >> a1.real() >> a1.imag() >> a2.real() >> a2.imag() >> b1.real() >> b1.imag() >> b2.real() >> b2.imag();
    if (EQ(a1.real(), 1000)) break;
    cout << (is_orthogonal(a1, a2, b1, b2) ? "YES" : "NO") << "\n";
    //cout << a1.real() << a1.imag() << a2.real() << a2.imag() << b1.real() << b1.imag() << b2.real() << b2.imag() << "\n";

    a1.real() = 1000;
  }
  return 0;
}